C# SQL數據庫的基礎增刪改查和事務

剛學了C#中寫SQL數據庫的增刪改查,只是最基礎SQL語句使用,深入地等待學習中。

在操作數據庫之前,要先下載SQL Server與C#連接使用,數據庫的表都是放在SQL Server當中的,C#只是鏈接SQL Server從而操作裏面的數據庫表。

現在開始C#代碼編寫:

一、定義連接字符串,用來鏈接SQL Server

string str_con = "server=.(服務器名稱一般爲 . );database=WordBook(數據庫名稱);uid=sa(服務器登錄名);pwd=123(服務器密碼)";

二、有了鏈接字符串之後,開始數據庫操作

 1、數據庫查詢

定義了一個查詢方法,用來調用

public DataSet queryDatabase(string sql)    //sql是查詢語句
        {
            //儲存數據的工具初始化
            DataSet ds = new DataSet();
            //相當於鏈接數據庫的一個工具類(連接字符串)
            using (SqlConnection con = new SqlConnection(str_con))
            {
                con.Open();  //打開
                //用SqlConnection工具鏈接數據庫,在通過sql查詢語句查詢結果現存入sql適配器
                SqlDataAdapter sda = new SqlDataAdapter(sql,con);   //(查詢語句和連接工具)
                sda.Fill(ds);    //將適配器數據存入DataSet工具中
                con.Close();   //用完關閉SqlConnection工具
                return ds;
            }
        }

在需要查詢數據庫的地方調用此方法:

private void query() {
            //查詢WordBook表中,book_key字段數值爲7的那一行數據
            //string sql = "select * from Word_Book where book_key='7'";

            string sql = "select * from Word_Book ";     //查詢全表
            DataSet ds = help.queryDatabase(sql);        //查詢到數據
            DataTable dt = ds.Tables[0];                       //把查到的數據存入數據表中
            sqlDataResult.DataSource = dt;                  //把數據賦值給gridView展示(全表)

            // string str=dt.Rows[0][1].ToString();//查找表中某一個內容
            // MessageBox.Show(str);
        }

2、數據庫添加、刪除、修改

C#中數據庫的添加、刪除、修改用的是同斷代碼,所以定義了一個方法,用來調用:

public int changeSqlData(String sql)
        {
            using(SqlConnection con=new SqlConnection(str_con))
            {
                con.Open();
                //操作數據庫的工具SqlCommand
                SqlCommand cmd = new SqlCommand(sql, con);//(操作語句和鏈接工具)
                int i=cmd.ExecuteNonQuery();//執行操作返回影響行數()
                con.Close();
                return i;
            }
        }

在需要操作數據庫的地方調用此方法:

①數據庫添加:

 private void btn_add_Click(object sender, EventArgs e)
        {
            //sql添加數據 insert into 表名(字段,字段...) values(‘內容’,‘內容’...)
            string sql = "insert into Word_Book(book_word_CN,book_word_JP,book_word_Roma,book_nominal," +
                "book_gloze) values('" + book_word_CN.Text.Trim()+"','"+ book_word_JP .Text.Trim() + "','"
                + book_word_Roma .Text.Trim() + "','"+ book_nominal.Text.Trim() + "','" + book_gloze.Text.Trim() + "')";
                int i=help.changeSqlData(sql);
            if (i == 0) MessageBox.Show("添加失敗", "提示:");
            else MessageBox.Show("添加成功", "提示:");
        }

②數據庫刪除:

 private void btn_delete_Click(object sender, EventArgs e)
        {
            //根據同個字段中不同內容刪除多行
            //delete from Word_Book where book_key in (1,2,3)

            //sql刪除數據delete 表名 where 字段='內容'單個條件用or鏈接,多個條件用and鏈接
            string sql = "delete from Word_Book where book_key='"+book_key.Text.Trim()+"'";
            int i=help.changeSqlData(sql);
            if (i == 0) MessageBox.Show("刪除失敗", "提示:");
            else MessageBox.Show("刪除成功", "提示:");
        }

②數據庫更新:

 private void btn_update_Click(object sender, EventArgs e)
        {
            //根據條件修改多個字段內容
            //update 表名 set 字段='內容', 字段='內容' where 條件字段='內容'
            string sql = "update Word_Book set book_word_CN='"+book_word_CN.Text.Trim()+
                "', book_word_JP='"+book_word_JP.Text.Trim()+"'where book_key='" + book_key.Text.Trim()+"'";
            int i = help.changeSqlData(sql);
            if (i == 0) MessageBox.Show("修改失敗", "提示:");
            else MessageBox.Show("修改成功", "提示:");
        }

3、數據庫事務操作數據庫

用數據庫事務相當於把數據庫操作捆綁執行,只要其中一條sql語句失敗,直接返回,不進行數據庫操作,只有全部執行正確,纔會更新數據庫。

定義了一個查詢方法,用來調用

 public bool openTrans(List<String> lst)
        {
            using (SqlConnection con=new SqlConnection(str_con))
            {
                con.Open();
                //開啓事務
                SqlTransaction trans = con.BeginTransaction();
                SqlCommand cmd = new SqlCommand();
                cmd.Connection = con;//添加鏈接工具
                cmd.Transaction = trans;//添加事務
                try
                {
                    for (int i = 0; i < lst.Count; i++)
                    {
                        string sql=lst[i].ToString();//獲取sql語句
                        cmd.CommandText = sql;//添加sql語句
                        cmd.ExecuteNonQuery();//執行
                    }
                    trans.Commit();//執行完成之後提交
                    return true;
                }
                catch(Exception e)
                {
                    //執行sql語句失敗,事務回滾
                    trans.Rollback();
                    return false;
                }
                finally
                {
                    con.Close();
                }
            }
        }

在需要操作數據庫的地方調用此方法:

private void transql_Click(object sender, EventArgs e)
        {
            List<string> lst = new List<string>();
            lst.Add("update Word_Book set book_word_CN='" + book_word_CN.Text.Trim() +
                "', book_word_JP='" + book_word_JP.Text.Trim() + "'where book_key='" + book_key.Text.Trim() + "'");
            lst.Add("update Word_Book set book_word_Roma='" + book_word_Roma.Text.Trim() +
               "', book_nominal='" + book_nominal.Text.Trim() + "'where book_key='" + book_key.Text.Trim() + "'");
            Boolean isOk= help.openTrans(lst);
            if (!isOk) MessageBox.Show("修改失敗", "提示:");
            else MessageBox.Show("修改成功", "提示:");
        }


C#增刪改查操作完成,想要方便可以自定義一個類,把所有的方法寫在裏面,當有用到的時候可以初始化該類的實例用來調用類裏的方法,完工。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章