执行SQL语句:Command对象
1.Command对象概述
??Command对象是一个数据命令对象,主要功能是向数据库发送查询、更新、删除、修改操作的SQL语句。Command对象主要有以下几种方式。
????SqlCommand:用于向SQL Server数据库发送SQL语句,位于System.Data.SqlClient命名空间。
????OleDbCommand:用于向使用OLEDB公开的数据库发送SQL语句,位于System.Data.OleDb命名空间。例如,Access数据库和MySQL数据库都是OLEDB公开的数据库。
????OdbcCommand:用于向ODBC公开的数据库发送SQL语句,位于System.Data.Odbc命名空间。有些数据库如果没有提供相应的连接程序,则可以配置好ODBC连接后,使用OdbcCommand。
????OracleCommand:用于向Oracle数据库发送SQL语句,位于System.Data.OracleClient命名空间。
2.设置数据源类型
??Command对象有3个重要的属性,分别是Connection、CommandText和CommandType。Connection属性用于设置SqlCommand使用的SqlConnection。CommandText属性用于设置要对数据源执行的SQL语句或存储过程。CommandType属性用于设置指定CommandText的类型。CommandType属性的值是CommandType枚举值,CommandType枚举有3个枚举成员,分别介绍如下。
????StoredProcedure:存储过程的名称。
????TableDirect:表的名称。
????Text:SQL文本命令。
??如果要设置数据源的类型,则可以通过设置CommandType属性来实现。
3.执行SQL语句
??Command对象需要取得将要执行的SQL语句,通过调用该类提供的多种方法,向数据库提交SQL语句。下面详细介绍SqlCommand对象中的几种执行SQL语句的方法。
??1.ExecuteNonQuery方法
??执行SQL语句,并返回受影响的行数,在使用SqlCommand向数据库发送增、删、改命令时,通常使用ExecuteNonQuery方法执行发送的SQL语句。
private void button1_Click(object sender, EventArgs e)
{
string connString = "server=.;database=denglu;uid=test;pwd=test;connect timeout=5";
SqlConnection sqlconn = new SqlConnection(connString);
sqlconn.Open();
SqlCommand sqlcmd = new SqlCommand();
sqlcmd.Connection = sqlconn;
sqlcmd.CommandText = "update Users set password=888 where username='哈哈哈'";
sqlcmd.CommandType = CommandType.Text;
//int i = Convert.ToInt32(sqlcmd.ExecuteNonQuery()); //ExecuteNonQuery返回受影响的行数
//MessageBox.Show(i.ToString());
}
??2.ExecuteReader方法
??执行SQL语句,并生成一个包含数据的SqlDataReader对象的实例。
??代码:
private void button1_Click(object sender, EventArgs e)
{
string connString = "server=.;database=denglu;uid=test;pwd=test;connect timeout=5";
SqlConnection sqlconn = new SqlConnection(connString);
sqlconn.Open();
SqlCommand sqlcmd = new SqlCommand();
sqlcmd.Connection = sqlconn;
sqlcmd.CommandText = "select password from users";
sqlcmd.CommandType = CommandType.Text;
//使用ExecuteReader方法实例化一个SqlDataReader对象
SqlDataReader sdr = sqlcmd.ExecuteReader();
while (sdr.Read())
{
listView1.Items.Add(sdr[0].ToString());
}
sqlconn.Dispose();
button1.Enabled = false;
}
??界面:
?? 3.ExecuteScalar方法
??执行SQL语句,返回结果集中的第一行的第一列
?? 代码:
SqlConnection sqlConnection;
private void Form2_Load(object sender, EventArgs e)
{
string connString = "server=.;database=TBWRIMS;uid=test;pwd=test;connect timeout=5";
sqlConnection = new SqlConnection(connString);
sqlConnection.Open();
}
private void btn1_Click(object sender, EventArgs e)
{
try
{
if (sqlConnection.State == ConnectionState.Open || txt1.Text != "")
{
SqlCommand sqlCommand = new SqlCommand(); //***
sqlCommand.Connection = sqlConnection; //设置Connection属性
sqlCommand.CommandText = "select count(*) from" txt1.Text.Trim(); // 设置CommandText属性,以及SQL语句
sqlCommand.CommandType = CommandType.Text; //设置CommandType属性为Text,使其只执行SQL语句
int i = Convert.ToInt32(sqlCommand.ExecuteScalar()); //使用ExecuteScalar方法获取指定数据表中的数据数量
lab2.Text = "数据表*有:" i.ToString() "条数据";
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
??界面: