溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

C#中executenonquery用法介紹

發(fā)布時(shí)間:2020-04-24 14:29:30 來(lái)源:億速云 閱讀:547 作者:小新 欄目:編程語(yǔ)言

今天小編給大家分享的是C#中executenonquery用法介紹,相信很多人都不太了解,為了讓大家更加了解executenonquery用法,所以給大家總結(jié)了以下內(nèi)容,一起往下看吧。一定會(huì)有所收獲的哦。

C#中executenonquery用法介紹

C#中操作數(shù)據(jù)庫(kù)技術(shù)之ExecuteNonQuery用法

最近在補(bǔ)基礎(chǔ)知識(shí),剛好補(bǔ)到C#中對(duì)數(shù)據(jù)庫(kù)操作的一些技術(shù),今天學(xué)習(xí)了ExecuteNonQuery的東西,看自己項(xiàng)目維護(hù)項(xiàng)目的代碼和網(wǎng)上資料查詢,基本上搞懂了ExecuteNonQuery的用法,小小的做個(gè)總結(jié),供以后查閱。

ExecuteNonQuery方法主要用來(lái)更新數(shù)據(jù),當(dāng)然也可以用來(lái)執(zhí)行目標(biāo)操作(例如查詢數(shù)據(jù)庫(kù)的結(jié)構(gòu)或者創(chuàng)建諸如表等的數(shù)據(jù)庫(kù)對(duì)象)。通常用它來(lái)執(zhí)行insert、update、delete語(yǔ)句,在不使用Dataset的情況下更改數(shù)據(jù)庫(kù)中的數(shù)據(jù)。select語(yǔ)句不適合ExecuteNonQuery()方法。

一、首先,來(lái)看看ExecuteNonQuery的返回值:

1. 對(duì)于Update、insert、Delete語(yǔ)句執(zhí)行成功是返回值為該命令所影響的行數(shù),如果影響的行數(shù)是0,則返回值就是0;

2. 對(duì)于所有其他類型的語(yǔ)句,返回值為-1;

3. 如果發(fā)生回滾,返回值也為-1;

4. 我們一般對(duì)于更新操作,通過(guò)判斷返回值是否大于0,這個(gè)是沒(méi)有問(wèn)題的。但是對(duì)于其他的操作【如對(duì)數(shù)據(jù)結(jié)構(gòu)的操作(建表等)】如果操作成功返回值卻是-1,但是要注意一下啊,例如給數(shù)據(jù)庫(kù)添加一個(gè)新表,創(chuàng)建成功返回-1,如果操作失敗就會(huì)發(fā)生異常,所有執(zhí)行這種操作最好用Try,Catch語(yǔ)句來(lái)捕捉異常。

二、 command對(duì)象通過(guò)ExecuteNonQuery方法更新數(shù)據(jù)庫(kù)的過(guò)程非常簡(jiǎn)單,步驟如下:

1. 創(chuàng)建數(shù)據(jù)庫(kù)連接;

2. 創(chuàng)建Command對(duì)象,并指定一個(gè)SQL Inser、Update、Delete查詢或者存儲(chǔ)過(guò)程;

3. 把Command對(duì)象依附到數(shù)據(jù)庫(kù)連接上;

4. 調(diào)用ExecuteNonQuery()方法;

5. 關(guān)閉連接。

三、代碼示例使用方法:

1. 首先是一個(gè)很簡(jiǎn)單的類,里面提供了如何用command對(duì)象通過(guò)ExecuteNonQuery方法跟新數(shù)據(jù)庫(kù)。

public class ExecuteNonQueryClas
    {
        private static string connectionString = ConfigurationManager.ConnectionStrings["connectionString"].ConnectionString;

        //as this method provided static method, set the constructor to priviate to prevent create instance with 'new ExecuteNonQuery()'
        private ExecuteNonQueryClas()
        {

        }

        public static int ExecuteNonQuery(string commandText)
        {
            return ExecuteNonQuery(commandText, (SqlParameter[])null);
        }

        public static int ExecuteNonQuery(string commandText,SqlParameter[] commandParams)
        {
            //if connectionString is null, then throw exception
            if(connectionString == null || connectionString.Length == 0)
                throw new ArgumentNullException("connectionString");
            
            using(SqlConnection conn = new SqlConnection(connectionString))
            {
                SqlCommand cmd = new SqlCommand(commandText,conn);
                if (conn.State != ConnectionState.Open)
                    conn.Open();

                //check if the commandParams is not null, then attach params to command
                if(commandParams !=null)
                  AttachParameters(cmd,commandParams);

                int recordsAffected = cmd.ExecuteNonQuery();

                return recordsAffected;
            }

        }

        private static void AttachParameters(SqlCommand cmd,SqlParameter[] commandParams)
        {
            if (cmd == null) throw new ArgumentException("command");
            if (commandParams != null)
            {
                foreach (SqlParameter p in commandParams)
                {
                    if (p != null)
                    {
                        //// Check for derived output value with no value assigned
                        if ((p.Direction == ParameterDirection.InputOutput || p.Direction == ParameterDirection.Input) && (p.Value == null))
                        {
                            p.Value = DBNull.Value;
                        }
                        cmd.Parameters.Add(p);
                    }
                }
            }
        }
    }

2. 在主函數(shù)中的調(diào)用:

static void Main(string[] args)
        {
            string userName = Console.ReadLine();
            string loginId = "user";
            string sqlString = "update Users set UserName = @name where LoginID= @loginID";
            SqlParameter[] parms ={
                                      new SqlParameter("@name",userName),
                                      new SqlParameter("@loginID",loginId)
                                       
                                  };

            int rlt = ExecuteNonQueryClas.ExecuteNonQuery(sqlString,parms);

            Console.WriteLine(rlt);
            Console.Read();
        }

關(guān)于C#中executenonquery用法介紹就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的參考價(jià)值,可以學(xué)以致用。如果喜歡本篇文章,不妨把它分享出去讓更多的人看到。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI