SqlCommand()方法
SqlCommand cmd = new SqlCommand("insert into mynews value ('插入一條新數(shù)據(jù)')", con);
Command對(duì)象的構(gòu)造函數(shù)的參數(shù)有兩個(gè),一個(gè)是需要執(zhí)行的SQL語(yǔ)句,另一個(gè)是數(shù)據(jù)庫(kù)連接對(duì)象。創(chuàng)建Command對(duì)象后,就可以執(zhí)行SQL命令,執(zhí)行后完成并關(guān)閉數(shù)據(jù)連接,示例代碼如下所示。
cmd.ExecuteNonQuery(); //執(zhí)行SQL命令
con.Close(); //關(guān)閉連接
SqlCommand類的屬性
1.CommandText
獲取或設(shè)置要對(duì)數(shù)據(jù)源執(zhí)行的Transact—SQL語(yǔ)句或存儲(chǔ)過(guò)程的名稱。
2. CommandType
獲取或設(shè)置一個(gè)值,該值指示如何解釋CommandText屬性。
當(dāng)將 CommandType 屬性設(shè)置為 StoredProcedure 時(shí),應(yīng)將
CommandText 屬性設(shè)置為存儲(chǔ)過(guò)程的名稱。當(dāng)調(diào)用 Execute 方法之一時(shí),該命令將執(zhí)行此存儲(chǔ)過(guò)程。
用于 SQL Server 的 Microsoft .NET Framework 數(shù)據(jù)提供程序不支持在向通過(guò)
Text 的 CommandType 調(diào)用的 SQL 語(yǔ)句或存儲(chǔ)過(guò)程傳遞參數(shù)時(shí)使用問(wèn)號(hào) (?) 占位符。在這種情況下,必須使用命名的參數(shù)。例如:
SELECT * FROM Customers WHERE CustomerID = @CustomerID
下面的示例創(chuàng)建一個(gè)SqlCommand并設(shè)置它的一些屬性。
- public void CreateSqlCommand()
- {
- SqlCommand command = new SqlCommand();
- command.CommandTimeout = 15;
- command.CommandType = CommandType.Text;
- }
3.Connection
獲取或設(shè)置SqlCommand的實(shí)例使用的SqlConnection。
4.CommandTimeOut
獲取或設(shè)置在終止執(zhí)行命令的嘗試并生成錯(cuò)誤之前的等待時(shí)間。
SqlCommand類的方法
1.ExecuteNonQuery();
它的返回值類型為int型。多用于執(zhí)行增加,刪除,修改數(shù)據(jù)。返回受影響的行數(shù)。當(dāng)select操作時(shí),返回-1。
2.ExecuteReader();
它的返回類型為SqlDataReader。此方法用于用戶進(jìn)行的查詢操作。使用SqlDataReader對(duì)象的Read();方法進(jìn)行逐行讀取。
例如:
- SqlCommand comm =new SqlCommand("select * from CGSZ where cid="+id,conn);
- SqlDataReader reder=comm.ExecuteReader();
- while(reder.Read())
- {
- //讀出內(nèi)容列
- string str=reder["cname"].ToString();
- //讀取分類列
- string str1=reder["ckind"].ToString();
- //分別為文本框加載數(shù)據(jù)
- this.txtContent.Text = str;
- this.txtClass.Text = str1;
- }
- /// <summary>
- /// 對(duì)連接執(zhí)行 Transact-SQL 語(yǔ)句返回一個(gè)SqlDataReader,查詢是否存在記錄(注意要關(guān)閉)。
- /// </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;
- }
- }
其中的讀取數(shù)據(jù)列的時(shí)候。除了使用reder["列名"].ToString();還可以使用reder[索引].ToSting();<注意:這里的索引指的是數(shù)據(jù)庫(kù)中列的索引。從0開(kāi)始。>
3.ExecuteScaler();
它的返回值類型多位int類型。它返回的多為執(zhí)行select查詢。得到的返回結(jié)果為一個(gè)值的情況,比如使用count函數(shù)求表中記錄個(gè)數(shù)或者使用sum函數(shù)求和等。
- /// <summary>
- /// Update(// || p.Value.ToString().Trim() == "System.Byte[]")) by richmen 2011 05
- /// 注釋掉才可以實(shí)現(xiàn)相片的修改跟保存功能
- /// 執(zhí)行查詢,并返回查詢所返回的結(jié)果集中第一行的第一列。忽略其他列或行。
- /// </summary>
- /// <param name="sql">sql語(yǔ)句或者存儲(chǔ)過(guò)程的名稱</param>
- /// <param name="parameters">null的時(shí)候?yàn)閟ql</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.其它;
當(dāng)參數(shù)中含有問(wèn)號(hào) (?) 等占位符時(shí),必須使用命名的參數(shù)。
下面的示例演示如何創(chuàng)建 SqlCommand 和向 SqlParameterCollection 中添加參數(shù)。例如:
- 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);
- }
- }
- }
|