首頁 >後端開發 >C#.Net教程 >executenonquery 的用法詳解

executenonquery 的用法詳解

藏色散人
藏色散人原創
2020-02-26 10:13:5610531瀏覽

executenonquery 的用法詳解

executenonquery 的用法詳解

C#中操作資料庫技術之ExecuteNonQuery用法

最近在補基礎知識,剛好補到C#中對資料庫操作的一些技術,今天學習了ExecuteNonQuery的東西,看自己專案維護專案的程式碼和網路資料查詢,基本上搞懂了ExecuteNonQuery的用法,小小的做個總結,供以後查閱。

ExecuteNonQuery方法主要用來更新數據,當然也可以用來執行目標操作(例如查詢資料庫的結構或建立諸如表等的資料庫物件)。通常用它來執行insert、update、delete語句,在不使用Dataset的情況下更改資料庫中的資料。 select語句不適合ExecuteNonQuery()方法。

推薦《C 影片教學

一、首先,來看看ExecuteNonQuery的回傳值:

    1. 對於Update、 insert、Delete語句執行成功是傳回值為該指令所影響的行數,如果影響的行數是0,則回傳值就是0;

    2. 對於所有其他類型的語句,傳回值為-1;

    3. 如果發生回滾,回傳值也為-1;

    4. 我們通常在更新操作,判斷回傳值是否大於0,這是沒有問題的。但是對於其他的操作【如對資料結構的操作(建表等)】如果操作成功返回值卻是-1,但是要注意一下啊,例如給資料庫添加一個新表,創建成功返回-1,如果操作失敗就會發生異常,所有執行這種操作最好用Try,Catch語句來捕捉異常。

二、command物件透過ExecuteNonQuery方法更新資料庫的過程非常簡單,步驟如下:

    1. 建立資料庫連線;

    2. 建立Command對象,並指定一個SQL Inser、Update、Delete查詢或預存程序;

##    3. 將Command物件依附到資料庫連線上;

    4. 呼叫ExecuteNonQuery()方法;

    5.關閉連線。

三、程式碼範例使用方法:

    1. 首先是一個很簡單的類,裡面提供瞭如何用command物件透過ExecuteNonQuery方法跟新資料庫。

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. 主函數中的呼叫:

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();
        }

   好啦, 上面就是使用ExecuteNonQuery方法最簡單的介紹和範例。

以上是executenonquery 的用法詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn