.net使用中sqlcommand的用法
2013-02-18 14:01
204 查看
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的用法
- .net中和sql中使用事务的两种用法介绍
- .NET 设计规范--.NET约定、惯用法与模式--8.使用规范
- .net标准化查询中使用like的用法
- NUnit详细使用用法(补充)--在.NET中如何利用NUnit测试Private和Protected方法
- NUnit详细使用用法(补充)--在.NET中如何利用NUnit测试Private和Protected方法
- NUnit详细使用用法(补充)--在.NET中如何利用NUnit测试Private和Protected方法
- .net标准化查询中使用like的用法
- SqlCommand对象-存储过程的使用
- 使用Mono进行.NET开源编程 [转]
- 简单的使用.NET对称加密的例子
- 【.Net码农】Linq中GroupBy方法的使用总结
- 如何使用.NET生成C#源代码
- ZZ:使用.NET语言开发Silverlight应用程序入门(二):界面和对象模型
- 使用.NET从零开始打造短信应用系统之一
- JAVA和.NET使用DES对称加密的区别
- Luncence .Net 使用
- 在SQL Server 2005 中使用.net程序集的一项注意
- .Net使用RabbitMQ详解
- .NET中使用Redis (一)