1. 程式人生 > >C#中對資料庫的基本操作(增刪改以及呼叫儲存過程)

C#中對資料庫的基本操作(增刪改以及呼叫儲存過程)

因為最近在寫web API的時候需要對資料庫操作,所以要用到ADO.NET,因為之前沒有接觸過.NET所以也是一邊上網查資料看C#書一邊寫,現在對這塊基礎的部分已經掌握了,現在寫下來只是想對自己前段時間的學習做個簡單的總結,也便於自己以後查閱(網上有很多類似的資源,大家可以都看看)

//下面的例子中提到的資料庫名字是User,表名是User1(USERNAME,USERPASSWORD)

1、資料庫連線以及開啟資料庫

這是你對資料庫操作的第一步,就是首先你要連線上資料庫,然後開啟資料庫,才可以對資料庫進行簡單的操作,我用到的開發工具是VS2015以及SQL SEREVER 2014(都是最新的開發工具)

首先我們需要用VS2015建立一個c#的控制檯應用程式,我們必須要包含兩個using 指令using System.Data和using System.Data.SqlClient(注意SqlClient是因為我選用的DBMS為SQL SEREVER,假如我們需要連線的資料庫是mysql那麼就應該用MySqlClient)

接著我們需要建立一個連線資料庫物件 SqlConnection conn = new SqlConnection(),然後conn物件裡有個叫ConnectionString(連線字串·)的屬性,實際上是一個特殊的string型別的字串,這個屬性後面賦值的字串有固定的格式,我們不能自己隨便寫,否則在編譯器會報錯,在這裡我只介紹一下最常用的最簡單的一種方法。conn.ConnectionString = "Server=伺服器名字;DataBase=資料庫名字;uid=sa;pwd=;",uid表示使用者名稱字,也可以寫作user id;pwd是密碼,也可以寫作 password;這裡需要說明的一下的是這種是用sa登陸方式,如果採用windows使用者直接登陸就不可以這樣寫,具體的方法,請讀者自己下去查閱資料。如果除錯沒有報錯,那麼我們就證明已經成功連線上資料庫了,我們對資料庫操作,僅僅連線上資料庫是不行的,我們還需要開啟資料庫,這個時候需要用 conn.Open()來開啟資料庫,如果我們想證明我們是不是成功打開了資料庫,那麼可以 用 Console.WriteLine(conn.State)來列印一下檢視一下,如果為open則開啟,否則沒有。現在我附上自己寫的程式碼方便大家自己下去練習和理解

static void TestingConnection()
        {
            SqlConnection conn = new SqlConnection();
            conn.ConnectionString = "Server=PC-20161018ZOVK\\SQLEXPRESS;DataBase=User;uid=sa;pwd=zh1996;";
            try
            {
                Console.WriteLine(conn.State);
                conn.Open();
                Console.WriteLine(conn.State);
            }
            catch(SqlException ex)
            {
                Console.WriteLine("資料庫操作異常!");
                Console.WriteLine(ex.Message);




            }
            finally
            {
                if (conn.State != ConnectionState.Closed)
                    conn.Close();


            }
            Console.WriteLine(conn.State);


        }

2、資料庫的增

實際上就是向資料庫插入一條或者多條資料。首先應該定義一個string 型別的sql語句(string sql = "insert into User1(USERNAME,USERPASSWORD) VALUES(@USERNAME,@USERPASSWORD)")這裡還需要提醒一下的是,不要忘記寫values裡面引數前面的@字元,否則是沒法插入成功的。接著再定義一個SqlCommand的物件( SqlCommand cmd = new SqlCommand(sql,conn));需要向資料庫插入username和userpassword,需要分別定義兩個 SqlParameter物件( SqlParameter parn = new SqlParameter("@USERNAME", "ZHANG1");)對引數賦值之後我們需要插入到資料庫( cmd.Parameters.Add(parn);)同樣的道理對userpassword也是一樣,在這裡就不一一舉例子了,後面會附上完整程式碼。那麼我們怎麼確定自己插入成功了呢?在cmd物件裡一個方法叫ExecuteNonQuery(),如果它的值大於1那麼就證明插入成功了,否則失敗。我們可以最後列印一下ExecuteNonQuery()的結果。還有一點細節很重要,就是在對資料庫操作後要斷開與資料庫的連線。

 //插入資料
       static void Insert(SqlConnection conn)
        {
            string sql = "insert into User1(USERNAME,USERPASSWORD) VALUES(@USERNAME,@USERPASSWORD)";
            SqlCommand cmd = new SqlCommand(sql,conn);
            SqlParameter parn = new SqlParameter("@USERNAME", "ZHANG1");
            cmd.Parameters.Add(parn);
            SqlParameter parm = new SqlParameter("@USERPASSWORD", "12344");
            cmd.Parameters.Add(parm);
            int result = cmd.ExecuteNonQuery();
            Console.WriteLine(result);
            conn.Dispose();
        }

3、資料庫的刪和更新

對資料庫的刪除和更新就簡單了。就是簡單的寫一個sql語句然後在 SqlCommand物件中呼叫一下就ok了。我就不細說了,附上程式碼應該很容易就可以看懂。

對資料的刪

 //資料的刪除
        static void Delete(SqlConnection conn)
        {
            string sql="DELETE FROM User1 WHERE USERNAME='張顧遠';";
            SqlCommand cmd = new SqlCommand(sql, conn);
            Console.WriteLine(cmd.ExecuteNonQuery());
        }

對資料的更新

 //資料的更新
        static void Updata(SqlConnection conn)
        {
            string sql = "update User1 set USERNAME='zhang' where USERNAME='張顧遠';";
            SqlCommand cmd = new SqlCommand(sql, conn);
            Console.WriteLine(cmd.ExecuteNonQuery());
        }

4、呼叫儲存過程

在c#裡呼叫儲存過程相對來說比較麻煩一點,下面我將對這個問題進行詳細的講解。

首先應該建立一個SqlCommand 的物件,然後對其賦值第一個引數為儲存過程名字,第二個為資料庫連線物件(SqlCommand cmd = new SqlCommand("儲存過程名字",conn))。然後cmd裡有個CommandType的屬性對其賦值,選擇StoredProcedure表示執行的是儲存過程(  cmd.CommandType = CommandType.StoredProcedure;)

如果儲存過程裡包含引數,那麼要傳參。SQL SEREVER裡的儲存過程預設為傳入引數,假如我在這裡呼叫的儲存過程名字是USER(包含兩個引數NAME,PWD),傳引數與上面的對資料增的過程類似,有部分不相同的就是需要增加額外的資訊(SqlParameter n = new SqlParameter("@NAME", SqlDbType.VarChar, 20),第一個為引數名字記得加@,第二個為引數型別,第三個為長度,如果引數型別為int,那麼第三個引數我們就不需要寫),接著就是對引數賦值了, n.Value = "ZHAG",然後就是將引數新增到命令物件 cmd.Parameters.Add(n);對PWD的處理方法也是和上面一樣。

 //呼叫儲存過程
        static void PROCEDURE(SqlConnection conn)
        {
            //呼叫儲存過程
            SqlCommand cmd = new SqlCommand("PUSER",conn);
            
            cmd.CommandType = CommandType.StoredProcedure;//告知執行儲存過程
            //傳引數
           
            SqlParameter parameter = new SqlParameter();
            SqlParameter n = new SqlParameter("@NAME", SqlDbType.VarChar, 20);
            n.Value = "ZHAG";
            cmd.Parameters.Add(n);//將引數新增到命令物件
            SqlParameter p = new SqlParameter("@PWD", SqlDbType.VarChar, 8);
            p.Value = "123";
            cmd.Parameters.Add(p);


            Console.WriteLine(cmd.ExecuteNonQuery());
        }
    }