ExecuteNonQuery()一般用来执行Update、Delete、Insert语句
对于一种一行、一列返回值的结果执行用ExecuteScalar(),它返回object类型。举例如下:
?
- using(SqlConnection conn = new SqlConnection(connstr)) {
- conn.Open();//打开连接 //通过连接创建一个向数据库发命令(Command)的对象SqlCommand
- using(SqlCommand cmd = conn.CreateCommand()) {
- cmd.CommandText =”select Name from T_Student where Name=”XXX””;// CommandText要执行的SQL语句 cmd.ExecuteScalar();//执行
- } }
返回值有多行结果时要用ExecuteReader(),返回类型SqlDataReader,需要释放,用法举例:
?
- using(SqlConnection conn = new SqlConnection(connstr)) {
- conn.Open();//打开连接 //通过连接创建一个向数据库发命令(Command)的对象SqlCommand
- using(SqlCommand cmd = conn.CreateCommand()) {
- cmd.CommandText =”select * from T_Student where Age<18”; using(SqlDataReader reader=cmd.ExecuteReader()
- { while(reader.Read())
- { string name=reader.GetString(1);//获得第一列列的值
- int age=reader.GetIn32(2); //获得第2列列的值 Console.WriteLine(name);
- Console.WriteLine(age.ToString()); }
- } }
- }
其中Read方法返回bool类型,查询结果是放到数据库中,没有放到客户端。初始指针指向第一条数据之前,每调用一次Reader指针下移一条,只要没有移到最后一条之后,就直接返回true。reader的GetStringGetInt32等方法只接受整数参数,也就是序号,用GetOrdinal方法根据列名动态得到序号。










