1.数据集DataSet |
2.利用DataTable对象获取数据(记录集) |
3.打开数据库获取数据 |
1.数据集DataSet
//创建一个内存的数据集 DataSet ds =new DataSet("DS5"); //创建一张内存表 DataTable dt1 =new DataTable("dt1"); //把表放到数据集里面去。 ds.Tables.Add(dt1); //给表定义列 DataColumn dcName = new DataColumn("Name",typeof(string)); DataColumn dcAge = new DataColumn("Age",typeof(int)); DataColumn dcId=new DataColumn("Id",typeof(int)); //把列放到表里面去。 dt1.Columns.AddRange(new DataColumn[]{dcId,dcName,dcAge}); //给表添加数据 dt1.Rows.Add(1, "老马", 18); dt1.Rows.Add(1, "赵黑", 29); dt1.Rows.Add(1, "老王", 18); dt1.Rows.Add(1, "老汪", 19); foreach(DataTable tb in ds.Tables) { foreach (DataRow dataRow in tb.Rows) { Console.WriteLine(dataRow[0]+" " +dataRow[1]+" "+dataRow[2]); } }
2.利用DataTable对象获取数据(记录集)/*注意:如果DataTable获取记录,不用打开数据库,即Open()*/
1)新建SqlConnection对象
//第一步:新建SqlConnection对象
string ConnStr = "Data Source=.;Initial Catalog=ADO_DEMO;Integrated Security=True"; SqlConnection SqlConn = new SqlConnection(); //设置SqlConnection对象的连接字符串; SqlConn.ConnectionString = ConnStr;
2)新建SqlCommand对象
//新建SqlCommand对象 SqlCommand cmd_datatable = new SqlCommand(); //设置SqlCommand对象的Connection属性,即:SqlConn(SqlConnection类型的对象) cmd_datatable.Connection = SqlConn;
//如果是执行INSERT/UPDATE/DELETE的SQL语句,可以直接设置CommandText属性
//如果是执行存储过程,则必须设置CommandType属性为CommandType.StoredProcedure
cmd_datatable.CommandText = "SELECT * FROM Ex_Class";
3)新建一个SqlDataAdapter对象
//新建一个SqlDataAdapter对象,用来向DataTable填充数据 SqlDataAdapter sda = new SqlDataAdapter(); //设置SqlDataAdapter对象对应的SqlCommand对象 sda.SelectCommand = cmd_datatable;
4)新建一个DataTable对象
//新建一个DataTable对象,用来接收SqlDataAdapter对象传递过来的数据 DataTable dt = new DataTable(); //调用SqlDataAdapter对象的Fill方法,将数据填充到DataTable sda.Fill(dt);
5)使用DataTable中的数据
//接下来可以使用DataTable中的数据,比如获取第一行的值: string MyClassName = Convert.ToString(dt.Rows[0]["ClassName"]); int MyClassCount = Convert.ToInt32(dt.Rows[0]["ClassCount"]); Response.Write(string.Format("DataTable返回一条记录:ClassName:{0} ClassCount:{1}<br><br>", MyClassName, MyClassCount)); //也可以使用foreach遍历DataTable中的数据 List<Model> DList = new List<Model>(); foreach(DataRow dr in dt.Rows) { Model Obj = new Model(); Obj.ClassName = Convert.ToString(dr["ClassName"]); Obj.ClassCount = Convert.ToInt32(dr["ClassCount"]); DList.Add(Obj); //或者直接输出值 Response.Write(string.Format("DataTable返回多条记录:ClassName:{0} ClassCount:{1}<br><br>", dr["ClassName"], dr["ClassCount"])); }
3.打开数据库获取数据
1)创建连接对象SqlConnection
//参数含义: //server(data source):要连接的数据库服务器的地址 //user id:sql server身份验证的登录名 //password:密码 //database(initial catalog):使用的数据库 string connString = @"server=.\sql2012;userid=sa;password=123;database=StuDB"; SqlConnection conn= new SqlConnection(connString); //打开连接 conn.Open();
2)创建Command对象
SqlCommand cmd = new SqlCommand("select * from student", conn);
3)调用Command对象的ExecuteReader()方法,返回一个DataReader对象
SqlDataReader dr = cmd.ExecuteReader();
4)判断DataReader对象是否包含数据行,如果没有数据行,返回false
if (!dr.HasRows) { MessageBox.Show("没有查询您要的学员信息!"); return; }
5)通过DataReader对象读取每一行的数据,如果能读取到下一行,则返回true,如果读取结束,返回false
while (dr.Read()) { //通过DataReader对象[列的下标]获得指定列的值,返回object类型的值 txtName.Text = dr[0].ToString(); //通过DataReader对象[列的名称]获得指定列的值,返回object类型的值 cmoSex.SelectedItem = dr["sex"]; dtpBirthday.Value = (DateTime)dr["sbirthday"]; txtEmail.Text = dr["semail"].ToString(); txtId.Text = dr["sId"].ToString(); comClass.SelectedValue = dr["classNo"];//设置班级下拉列表的选中项 }
6)关闭DataReader对象,关闭数据库连接
dr.Close();
conn.Close();