图 1 数据库T_Student表
为了避免数据库注入漏洞,微软设置有查询参数,举例如下:
cmd.CommandText =”select * from T_Student where Age<@Age”;
cmd.Parameters.Add(new SqlParameter(“@Age”,19));
这里把@Age设置为查询参数,但是@参数不能用了替换表名、字段名、select之类的关键字等。
SqlDataReader是和连接相关的,SqlDataReader中的查询结果并不是放在程序中的,而是放在数据库服务器中,SqlDataReader只是相当于一个游标,指到哪里读到哪里。
ADO.NET提供了数据集机制,DataSet,存在本地内存,其包含若干DataTable,DataTable包含若干行DataRow。使用方法:
?
- DataSet dataset=new DataSet(); SqlDataAdapter adapter=new SqlDataAdapter(cmd);
- adapter.Fill(dataset);
SqlDataAdapter是一个帮我们把SqlCommand查询结果填充到DataSet中的类,DataSet相当于本地的list集合(小数据库)。遍历方法如下:
?
- DataTable table=dataset.Tables[0];//一般情况下只有一个Tables,当同时执行多个select语句时有多个Tables。
- DataRowCollection rows=table.Rows; for(int i=0;i<rows.Count;i++)
- { DataRow row=rows[i];
- int age=(int)row[“Age”];//遍历年龄 }
基本上所有的步骤都是:打开链接--创建命令--执行--处理执行结果。所以可以写个公共类自己用,避免重复代码,详细代码如下:
- public static class SqlHelper {
- public static readonly string connstr = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString;
- public static SqlConnection OpenConnection()//建立连接 {










