一:执行命令的方法
1: ExecuteNonQuery:不返回结果(非查询)
2: ExecuteReader:(0行或多行)
3: ExecuteXmlReader:(XML)
SqlConnection conn = null;
try
{
conn = new SqlConnection(@"
server=./sqlexpress; integrated security=true; database=northwind");
//SqlCommand cmd = new SqlCommand();
//cmd.Connection = conn;
//cmd.CommandText = @"select count(*) from employees";
SqlCommand cmd = new SqlCommand(@"select count(*) from employees", conn);
conn.Open();
Console.WriteLine("{0}", cmd.ExecuteScalar());
}
catch (SqlException ex)
{
Console.WriteLine(ex.ToString());
}
finally
{
if (conn != null)
{
conn.Close();
}
}
二:ExecuteNonQuery,ExecuteReader,ExecuteScalar
1: ExecuteReader:可以读一个表的记录,只能读不能写
可以让我们在更新数据库时不使用 DataSet 而使用 ExecuteNonQuery 更改数据库中的数据。
通过执行 UPDATE、INSERT 或 DELETE SQL语句就可以达到更改数据库中的数据目的。
即使 ExecuteNonQuery 不返回任何行,映射到参数的输出参数或返回值仍然使用数据填充。
但对于 UPDATE、INSERT 和 DELETE SQL语句,返回的值就是受ExecuteNonQuery()命令影响的行数。
对其它类型的语句以及回退来说,返回的值都是 -1。
2: ExecuteScalar:只能读一条记录,一般用来判断数据库是否有数据等,只能读不能写
这种CMD相当于我们在ADO中用SQL语句中使用一些计算函数的功能一样,在这里我们只是返回所有影响的行数的第一行第一列数据,
这样也就是相当于专业为我们的如:select count(*) from database的功能一样,我们可以用
3: ExecuteNonQuery:可以写以可以读,
通常在asp中用Recordset对象来从数据库中读出数据,并且用循环语句来一个一个的读出数据,
但在我们的ADO.NET中,我们就是用DataReader 对象的ExecuteReader()方法来进行数据的列出,
并且我们用这个ExecuteReader()方法来显示数据是最快的一种方法,
因为当我们在用ExecuteReader()方法中的DataReader 对象来进行数据的在网站建设中显示时,他只可以一条一条向前读,不能返回,
也就是像ASP中的ADO方法中的Recordset 对象的Movenext一样,他没有move -1这样的返回方法。