C# WPF 快速开发07ADO.NET操作数据库

//SqlConnection包含SqlCommand包含SqlDataReader

using(SqlConnectionconn=newSqlConnection("DataSource=.;InitialCatalog=mydb;UserID=sa;Password=123456"))

{

conn.Open();

using(SqlCommandcmd=conn.CreateCommand())

{

//cmd.CommandText="selectname,agefromT_Studentwherename='"+m_txtName.Text+"'";//写SQL操作语句,m_txtName是文本控件的变量,这里表示得到用户输入的对应名字的结果集。注意用法name='"+m_txtName.Text+"'

//注意:是用上诉语句,如果用户输入1'or'1'=1会造成SQL注入漏洞,即不是得到一个人的数据,而是得到所有人的数据!用下面两行代码代替。

cmd.CommandText="selectname,[email protected]";

cmd.Parameters.Add(newSqlParameter("@name",m_txtName.Text));//@参数不能用与替换表名、字段名,可以替换insert/delete等条件参数替换

using(SqlDataReaderreader=cmd.ExecuteReader())

{

while(reader.Read())//指针初始位置在第一条数据之前,每执行一次Read()指针便往下移动一个位置

{

stringname=reader.GetString(0);//获取第一列指针所指的数据。

//注意:获取第几列不是看数据库中的表,而是看查询cmd.CommandText获取到的结果集

intage=reader.GetInt32(1);//Int64表long、bigint

}

}

}

}

C# WPF 快速开发07ADO.NET操作数据库

C# WPF 快速开发07ADO.NET操作数据库

DataSet原理:服务器的数据库查询后,用个链表把数据存在本地内存。适用于小数据量

C# WPF 快速开发07ADO.NET操作数据库

接下来是DataSet的用法,在写完CommandText语句得到结果集后

//SqlDataAdapter可以把SqlCommand查询结果填充到DataSet

SqlDataAdapteradapter=newSqlDataAdapter(cmd);

//DataSet相当于本地的一个复杂集合,需要解析得到命名空间。比较占内存的

DataSetdataset=newDataSet();

adapter.Fill(dataset);//执行cmd并且把SqlCommand查询结果填充到dataset

DataTabletable=dataset.Tables[0];//获取到的数据可以有多张表,但一般就获取一张表然后操作这张表。

DataRowCollectionrows=table.Rows;//获取到的表有多个行

//遍历这些行数据

for(inti=0;i<rows.Count;i++)

{

DataRowrow=rows[i];//取到当前行

intage=(int)row["age"];//获取数据

stringname=(string)row["name"];

}

//PS:程序频繁连接断开数据库确实会降低性能,但就可以增加并发量。比如网站查询,只要查询时才连接数据库,可以及时腾出连接数,提高在线人数的容纳量。