.net使用中sqlcommand的用法

SqlCommand()方法

SqlCommand cmd = new SqlCommand("insert into mynews value (‘插入一条新数据’)", con);Command对象的构造函数的参数有两个,一个是需要执行的SQL语句,另一个是数据库连接对象。创建Command对象后,就可以执行SQL命令,执行后完成并关闭数据连接,,示例代码如下所示。cmd.ExecuteNonQuery(); //执行SQL命令con.Close(); //关闭连接SqlCommand类的属性1.CommandText获取或设置要对数据源执行的Transact—SQL语句或存储过程的名称。 2. CommandType获取或设置一个值,该值指示如何解释CommandText属性。

当将 CommandType 属性设置为 StoredProcedure 时,应将 CommandText 属性设置为存储过程的名称。当调用 Execute 方法之一时,该命令将执行此存储过程。

用于 SQL Server 的 Microsoft .NET Framework 数据提供程序不支持在向通过 Text 的 CommandType 调用的 SQL 语句或存储过程传递参数时使用问号 (?) 占位符。在这种情况下,必须使用命名的参数。例如:

SELECT * FROM Customers WHERE CustomerID = @CustomerID

下面的示例创建一个SqlCommand并设置它的一些属性。

public void CreateSqlCommand(){SqlCommand command = new SqlCommand();command.CommandTimeout = 15;command.CommandType = CommandType.Text;} 3.Connection 获取或设置SqlCommand的实例使用的SqlConnection。 4.CommandTimeOut获取或设置在终止执行命令的尝试并生成错误之前的等待时间。

SqlCommand类的方法1.ExecuteNonQuery();它的返回值类型为int型。多用于执行增加,删除,修改数据。返回受影响的行数。当select操作时,返回-1。 2.ExecuteReader();它的返回类型为SqlDataReader。此方法用于用户进行的查询操作。使用SqlDataReader对象的Read();方法进行逐行读取。例如:SqlCommand comm =new SqlCommand("select * from CGSZ where cid="+id,conn); SqlDataReader reder=comm.ExecuteReader(); while(reder.Read()) {//读出内容列string str=reder["cname"].ToString();//读取分类列string str1=reder["ckind"].ToString();//分别为文本框加载数据this.txtContent.Text = str;this.txtClass.Text = str1; }/// <summary>/// 对连接执行 Transact-SQL 语句返回一个SqlDataReader,查询是否存在记录(注意要关闭)。/// </summary>/// <param name="sql"></param>/// <returns></returns>public static SqlDataReader GetReader(string sql){using (SqlConnection con = new SqlConnection(ConnectionString)){SqlCommand cmd = new SqlCommand(sql,con);con.Open();SqlDataReader reader = cmd.ExecuteReader();return reader;}}其中的读取数据列的时候。除了使用reder["列名"].ToString();还可以使用reder[索引].ToSting();<注意:这里的索引指的是数据库中列的索引。从0开始。>

3.ExecuteScaler();它的返回值类型多位int类型。它返回的多为执行select查询。得到的返回结果为一个值的情况,比如使用count函数求表中记录个数或者使用sum函数求和等。

/// <summary>/// Update(// || p.Value.ToString().Trim() == "System.Byte[]")) by richmen 2011 05/// 注释掉才可以实现相片的修改跟保存功能/// 执行查询,并返回查询所返回的结果集中第一行的第一列。忽略其他列或行。/// </summary>/// <param name="sql">sql语句或者存储过程的名称</param>/// <param name="parameters">null的时候为sql</param>/// <returns></returns>public static object ExecuteScalar(string sql, SqlParameter[] parameters){if (parameters != null){foreach (SqlParameter p in parameters){if (p.Value == null)// || p.Value.ToString().Trim() == "System.Byte[]")p.Value = DBNull.Value;}}using (SqlConnection con = new SqlConnection(ConnectionString)){SqlCommand cmd = new SqlCommand();cmd.Connection = con;if (parameters != null){cmd.CommandType = CommandType.StoredProcedure;cmd.Parameters.AddRange(parameters);}else{cmd.CommandType = CommandType.Text;}cmd.CommandText = sql;try{con.Open();return cmd.ExecuteScalar();}catch{return string.Empty;}}}}

4.其它;当参数中含有问号 (?) 等占位符时,必须使用命名的参数。

下面的示例演示如何创建 SqlCommand 和向 SqlParameterCollection 中添加参数。例如:

private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, string cmdText, SqlParameter[] cmdParms){if (conn.State != ConnectionState.Open){conn.Open();}cmd.Connection = conn;cmd.CommandText = cmdText;if (trans != null){cmd.Transaction = trans;}cmd.CommandType = CommandType.Text;if (cmdParms != null){for (int i = 0; i < cmdParms.Length; i++){SqlParameter sqlParameter = cmdParms[i];if ((sqlParameter.Direction == ParameterDirection.InputOutput || sqlParameter.Direction == ParameterDirection.Input) && sqlParameter.Value == null){sqlParameter.Value = DBNull.Value;}cmd.Parameters.Add(sqlParameter);}}}private static void UpdateDemographics(Int32 customerID,string demoXml, string connectionString){// Update the demographics for a store, which is stored// in an xml column.string commandText = "UPDATE Sales.Store SET Demographics = @demographics "+ "WHERE CustomerID = @ID;";using (SqlConnection connection = new SqlConnection(connectionString)){SqlCommand command = new SqlCommand(commandText, connection);command.Parameters.Add("@ID", SqlDbType.Int);command.Parameters["@ID"].Value = customerID;// Use AddWithValue to assign Demographics.// SQL Server will implicitly convert strings into XML.command.Parameters.AddWithValue("@demographics", demoXml);try{connection.Open();Int32 rowsAffected = command.ExecuteNonQuery();Console.WriteLine("RowsAffected: {0}", rowsAffected);}catch (Exception ex){Console.WriteLine(ex.Message);}}}

人若勇敢就是自己最好的朋友

.net使用中sqlcommand的用法

相关文章:

你感兴趣的文章:

标签云: