1. 程式人生 > >C#&SQL 第二課 執行簡單增刪改操作

C#&SQL 第二課 執行簡單增刪改操作

ADO.net訪問資料庫的方式

解析1

  1. 連線資料庫用 Connection
  2. 執行SQL語句 Command
  3. 執行完畢後將結果一條一條的返回 DataReader

解析2

使用DataAdapte+DataSet,這種方法本質還是通過 Connection、Command、DataReader

將資料全部取出來,放到 DataSet 中

連線SQL Server

  • 連線字串:程式通過連線字串 指定要連線哪臺伺服器上的、哪個例項的哪個資料庫、用什麼使用者名稱和密碼。
  • ADO.net中通過SqlConnection類建立到SQL Server的連線,SqlConnection代表一個數據庫的連線,ADO.net中的連線等資源都實現了 IDisposable介面,可以使用using進行資源管理。執行備註中的程式碼如果成功了 就 OK
  •  Connection 的 StateChange 事件
  • 操作SQL Server 資料庫使用 SqlCommand物件,SqlCommand 表示向伺服器提交的一個命令(SQL語句等),CommandText 屬性為要執行的SQL語句。
  • 建立SqlCommand物件
  1. 通過 new 關鍵字建立
  2. 通過 IDbConnection.CreateCommand()方法建立(編寫通用程式碼的時候用(多型))
  3. 常用的三個方法

01 ExecuteNonQuery() 執行對資料的增刪改,返回影響行數,適合:insert、delete、update(對於其它語句返回 -1)

02 ExecuteScalar() 執行查詢,返回首行首列

03 ExecuteReader() 執行查詢,返回DataReader 物件

(*)StatementCompleted 事件

每條SQL語句執行完畢後觸發

多條語句同時執行(用分號隔開),如何獲取每條語句所影響的行數?//實際返回值為每條語句影響的行數的和。

程式碼分享

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace _03連線資料庫實現增刪改和簡單查詢
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //向TblPerson表插入一條記錄
            //1.連線資料庫

            //連線字串
            string constr = "Data Source=steve-pc;Initial Catalog=itcast2013;Integrated Security=True";

            //建立連線物件
            using (SqlConnection con = new SqlConnection(constr))
            {
                //開啟資料連線
                //如果con物件是其他地方傳遞過來的一個物件,則在開啟之前最好做判斷con.State
                con.Open();

                //向表中插入一條資料
                //先構建一個sql語句
                string sql = string.Format("insert into TblPerson(uname, uage, uheight) values('{0}',{1},{2})", "黃林", 18, 175);

                //執行sql語句需要一個"命令物件"
                //建立一個命令物件
                using (SqlCommand cmd = new SqlCommand(sql, con))
                {

                    //這裡要執行insert語句所以用ExecuteNonQuery()方法。
                    //通過呼叫該方法就會將insert語句交給資料庫引擎來執行
                    //這個方法的返回值是一個int型別,表示當前Sql語句執行後所影響的行數。
                    int r = cmd.ExecuteNonQuery();
                    Console.WriteLine("成功插入了{0}", r);


                    #region SqlCommand物件常用的3個方法。

                    //執行sql語句
                    //cmd.ExecuteNonQuery() //當執行insert,delete,update語句時,一般使用該方法


                    //當執行返回單個值的sql語句時使用該方法。
                    //cmd.ExecuteScalar()


                    //當執行Sql語句返回多行多列時,一般使用該方法。
                    //cmd.ExecuteReader()
                    #endregion

                }


            }

        }

        private void button2_Click(object sender, EventArgs e)
        {
            //把Id是41的刪除
            string constr = "Data Source=steve-pc;Initial Catalog=itcast2013;Integrated Security=True";
            using (SqlConnection con = new SqlConnection(constr))
            {
                string sql = string.Format("delete from TblPerson where autoId={0}", 41);
                using (SqlCommand cmd = new SqlCommand(sql, con))
                {
                    //儘可能晚的開啟連線
                    con.Open();
                    int r = cmd.ExecuteNonQuery();
                    //使用完畢後儘可能早的關閉連線
                    con.Close();
                    Console.WriteLine("刪除了{0}行。", r);
                }
            }
            MessageBox.Show("ok");
        }

        private void button3_Click(object sender, EventArgs e)
        {
            //更新操作
            string constr = "Data Source=steve-pc;Initial Catalog=itcast2013;Integrated Security=True";
            using (SqlConnection con = new SqlConnection(constr))
            {
                string sql = string.Format("update TblPerson set uname='{0}' where autoId={1}", "許正龍", 40);
                using (SqlCommand cmd = new SqlCommand(sql, con))
                {
                    con.Open();
                    int r = cmd.ExecuteNonQuery();
                    con.Close();
                    MessageBox.Show("更新了" + r + "行。");
                }
            }
        }
    }
}