目錄: 前言 SQL Server基礎準備 1.新建資料庫 2.在數據中添加表 3.向表中添加數據 SQL Server與C#基礎準備 實例解析 1.C#連接資料庫 2.查詢特定列數據 3.使用列別名 4.在列上加入計算 5.使用比較設置條件 總結 1.新建資料庫 2.在數據中添加表 3.向表中添加 ...
目錄:
正文:
前言:
對於SQL Server的相關知識我都是在校的時候瞭解的,畢業到現在可以說完全沒有再碰了,所謂三天不練手生,所以關於資料庫這一塊的知識我可以說完完全全還給老師了(emmmm,對不起我的學費呀),而且最尷尬的是資料庫的知識可以說是軟體開發一塊很重要的東西了,不說特別精通,但是我這種完全還給老師的“人才”可能也是沒誰了,所以!為了我曾經的學費,又重新撿起來學一下吧,目前本人供職於C#,所以文中所有的代碼聯繫均為C#語言,另:文中的點都是基礎知識複習(就我這水平也暫時別指望從這裡看到很高深的技術了o(╯□╰)o)。
SQL Server基礎準備
SQL Server:Structured Query Language結構化查詢語句。
1.新建資料庫
這裡我就懶得說什麼亂七八糟的定義了,SQL中重要的就是建表,表中重要的就是有主鍵,差不多就這兩個點。然後我現在直接通過資料庫建表:
2.在資料庫中添加表
然後再表中添加各種信息(在這裡我將學生編號設置為主鍵):
註意:一個表中一定要有一個主鍵!
Tip:如果你弄好了這個信息,然後關閉了表的界面,突然想起有什麼地方不對,想重新進去,那就右鍵點擊你要修改的表名,然後選擇“設計”就可以了。
3.向表中添加數據
然後就是給表添加信息了:
選中你剛剛保存的表,然後右鍵點擊,選中“編輯前200行”即可。然後一個勁的往裡面寫數據就對了。
SQL Server與C#基礎準備:
Visual Studio連接資料庫方法:
通過在工具中找到“伺服器資源管理器”,然後連接資料庫,英文:server explore.
在與資料庫操作的代碼中,我們需要加入using System.Data.SqlClient;
命名空間。
實例解析:
1.C#連接數據
代碼:
1 //表示一個到 SQL Server 資料庫的打開的連接 2 SqlConnection cn = new SqlConnection("server=(local);database=db_10;Uid=sa;Pwd="); 3 //SQL Server語言,對資料庫中表進行操作的語言 4 string cmdtx = ""; 5 //與DataSet使用相關 6 SqlDataAdapter dataAdapter; 7 //記憶體中的資料庫,用於暫存資料庫中的數據 8 DataSet dataSet/* = new DataSet()*/;
與資料庫相連,首先新建一個SqlConnection實例,等到要連接資料庫的時候就用cn.open()來打開數據。
這裡補充一下DataSet:
DataSet可以當成是記憶體中的資料庫,他不依賴於資料庫而獨立的數據集合。
我是這麼理解的:從資料庫中讀出來的數據暫時是保存在DataSet中的,等需要用的時候從DataSet中取出來。
在實際應用中,DadaSet一般有三種使用方法:
- 把資料庫中的數據通過DataAdapter對象填充到DataSet中;
- 通過DataAdapter對象操作DataSet實現更新資料庫;
- 把XML數據流或者文本載入到DataSet.
2.查詢特定列數據
對資料庫操作的語句:"SELECT 列名 FROM 表"
代碼:
1 //10.01-1 2 private void select_Button_Click(object sender, EventArgs e) 3 { 4 cmdtx = "SELECT 學生編號,學生姓名 FROM Table_1"; 5 //已經打開了在load中 6 //cn.Open(); 7 dataSet = new DataSet(); 8 dataAdapter = new SqlDataAdapter(cmdtx, cn); 9 dataAdapter.Fill(dataSet, "table"); 10 11 showSpecialInfo_dataGridView.DataSource = dataSet.Tables[0].DefaultView; 12 }
Tip:開始的時候只有這麼一個功能,我通過cn.Open();
單獨打開了資料庫的時候沒問題,後面因為添加了新的功能我在Load函數中又打開了一次,這個時候在運行就會報錯,所以實踐證明:只能打開一次資料庫。
3.使用列別名
對資料庫操作的語句:"SELECT 列名,某一列名 AS 他對應的列別名 FROM 表"
代碼:
1 //10.01-2 2 private void changeAlias_button_Click(object sender, EventArgs e) 3 { 4 if (columnName_comboBox.Text == "" || alias_textBox.Text == "") 5 { 6 MessageBox.Show("ColumnName or Alias can't be empty!"); 7 return; 8 } 9 //我去,一個空格坑了我這麼久 10 cmdtx = "SELECT " + columnName_comboBox.Text + "," + columnName_comboBox.Text + " AS " + alias_textBox.Text.Trim() + " FROM Table_1"; 11 dataAdapter = new SqlDataAdapter(cmdtx, cn); 12 //如果這裡我沒有重新實例化一個dataset就會調用之前在記憶體中的數據 13 dataSet = new DataSet(); 14 dataAdapter.Fill(dataSet, "table"); 15 16 changeAliasName_dataGridView.DataSource = dataSet.Tables[0].DefaultView; 17 }
Tip:這裡遇到了兩個問題:
- 因為一個空格我被坑到了,在SELECT語句中那裡的空格,彼此之間一個都不能少,不然資料庫讀不出來,就報錯了;
- 開始我在運用DataSet的時候,我沒有重新實例化一個,搞不懂為什麼顯示的數據總是不對,後來嘗試出來才發現要是不重新實例化DataSet,那麼他就一直調用原來的數據。
4.在列上加入計算
對資料庫操作的語句: SELECT 列名,(A列+B列) AS 新的列 FROM 表"
代碼:
1 //10.01-3 2 private void finalScore_button_Click(object sender, EventArgs e) 3 { 4 cmdtx = "SELECT 學生編號,馬克思成績,高數成績,(馬克思成績+高數成績) AS 總成績 FROM Table_3"; 5 dataAdapter = new SqlDataAdapter(cmdtx, cn); 6 dataSet = new DataSet(); 7 dataAdapter.Fill(dataSet, "table"); 8 Sum_dataGridView.DataSource = dataSet.Tables[0].DefaultView; 9 }
5.使用比較設置條件
對資料庫操作的語句:"SELECT 列名 FROM 表 WHERE 限制條件"
代碼:
1 //10.01-4 2 private void scoreLine_button_Click(object sender, EventArgs e) 3 { 4 if (line_comboBox.Text == "" || scoreLine_textBox.Text == "") 5 { 6 MessageBox.Show("Score can't be empty!"); 7 return; 8 } 9 dataSet = new DataSet(); 10 cmdtx = "SELECT * FROM Table_3 WHERE "+line_comboBox.Text+">"+scoreLine_textBox.Text; 11 dataAdapter = new SqlDataAdapter(cmdtx, cn); 12 dataAdapter.Fill(dataSet, "table"); 13 14 line_dataGridView.DataSource = dataSet.Tables[0].DefaultView; 15 }
總結:
在我看來對資料庫的操作的語句都比較不熟悉,加上可能有的時候涉及的各種表的名字很難記住,我的習慣是會再草稿紙上寫出那句話,然後條件再慢慢往裡面套,這樣比較笨拙,但是對我來說比較穩當一點,嘻嘻。