close

**本次操作使用北風(NorthWind)資料庫

 

Connected 連線操作-可以即時取得資料

DisConnected 離線操作-用於長時間使用、頻繁使用

 


連線操作:

Step1: SqlConnection 

把資料庫當作是水塔,資料是水塔裡面的水,而Connect是一條水管從資料庫把資料導出來。

Connect完我們必須打上Open()和Close(),就像是裝完水管我們必須要把水龍頭打開和關閉才能夠使用資料。

//SqlConnection conn = new SqlConnection("資料庫連接字串")

 

Step2: SqlCommand

篩選要讀取的資料表

 

Step3: SqlDataReader

讀取選擇的資料表

//SqlDataReader dataReader = command.ExecuteReader();

//dataReader.Read();

Read() 為布林值,有資料為真,反之。

一次只能叫出一筆資料,因此多搭配布琳的特性使用迴圈讀取資料。

 

Step4: UI

呈現

 

                SqlConnection conn = new SqlConnection("Data Source =.; Initial Catalog = Northwind; Integrated Security = True");
                conn.Open();

                SqlCommand command = new SqlCommand("Select * from Products", conn);
                SqlDataReader dataReader = command.ExecuteReader();

                //為布林值,一次只推進一筆資料,需搭配迴圈使用
                while (dataReader.Read())
                {
                    string s = $"{dataReader["ProductName"],-40}  -   {dataReader["UnitPrice"]:c2}";
                    this.listBox1.Items.Add(s);
                }

                //MessageBox.Show(dataReader["ProductName"].ToString());

                conn.Close();

 


離線操作:

和連線操作概念差不多,差在離線操作是把資料表抓下來,所做的更改都不會影響到資料庫裡面的資料。

 

Step1: SqlConnected

跟連線操作一樣的概念,先把連結建起來

 

Step2: SqlDataAdapter

像是轉接頭,把資料庫抓下來的資料表轉換

//SqlDataAdapter ad = new SqlDataAdapter("Select*from Categories",conn);

 

Step3: DataSet

用Fill()把資料表抓下來,並且塞到ds裡面。

ds是文字字串,必須用索引。

//DataSet ds=new DataSet();
//ad.Fill(ds);

 

Step4: UI ->DataGridView.DataSource

這邊是使用DataGridView呈現資料,如同上述ds是字串,因此需使用索引呼叫。

//this.dataGridView1.DataSource =ds.Tables[0];

 

            SqlConnection conn =new SqlConnection("Data Source =.; Initial Catalog = Northwind; Integrated Security = True");
            SqlDataAdapter ad = new SqlDataAdapter("Select*from Categories",conn);
            DataSet ds=new DataSet();
            ad.Fill(ds);

            this.dataGridView1.DataSource =ds.Tables[0];

 


TryCatch使用:

有時無法預測資料庫什麼時候會存取失敗或是連線失敗,可以搭配TryCatch當作最後一道防線盡量防止出現例外。

但TryCatch會耗資源,所以也不能無限度的一直使用,可以自行取捨。

以下為使用TryCatch

            try {
                //Connectedi,
                SqlConnection conn = new SqlConnection("Data Source =.; Initial Catalog = Northwind; Integrated Security = True");
                conn.Open();

                SqlCommand command = new SqlCommand("Select * from Products", conn);
                SqlDataReader dataReader = command.ExecuteReader();

                while (dataReader.Read())
                {
                    string s = $"{dataReader["ProductName"],-40}  -   {dataReader["UnitPrice"]:c2}";
                    this.listBox1.Items.Add(s);
                }

                //MessageBox.Show(dataReader["ProductName"].ToString());

                conn.Close();

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }

 


 

這就是我今天的筆記,若有錯誤非常非常歡迎指正undefined

以上,祝你我有個美好的一天undefined

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 半屏 的頭像
    半屏

    程式筆記 土炮記錄

    半屏 發表在 痞客邦 留言(0) 人氣()