淺析C#如何連接數據庫實現查詢功能
C#如何連接數據庫實現查詢功能?首先要求是進行驅動連接,連接好數據庫后,就只剩下對數據庫的訪問了。查詢可以參考一般數據庫的查詢。
數據庫操作四大步驟
1、查詢:select * from 表名(where 條件)
2、插入:insert into 表明(字段1,字段2……)values(值1,值2……)
3、修改:update 表名 set 字段1=值1,字段2=值2 (where 條件)
4、刪除:delete from 表名 (where條件)
在.NET中,對數據庫的訪問有兩種方式:oledb和sqlclient。兩種連接數據庫方式的不同之處是:oledb適合訪問各種各樣的數據庫,而sqlclient只適用于sql server數據庫,就訪問速度而言這兩種連接方式自然是sqlclient連接方式速度比較快,而相對也能夠用范圍來講則是oledb連接方式較好。下面capucivar將使用oledb連接方式來對數據庫進行訪問。
在連接數據庫之前需要導兩個包:System.Date和System.Date.Oledb。連接數據庫就要創建一個連接對象OleDbConnection conn = new OleDbConnection();,然后就要寫連接數據庫的字符串了:conn.ConnectionString="provider=sqloledb.1;data source=.;initial catalog=dbname;user id=username;pwd=password";連接字符串一共有五部分:1、指明驅動2、指明數據源,即數據庫所在的地址3、指定連接那個數據庫4、用戶名5、密碼。接下來就該打開這個連接了:conn.open()。這樣就連接好了數據庫,剩下的就是對數據庫進行訪問了。首先來做一個查詢,既然是查詢,先不管怎么查詢,我們知道查詢出來的數據一定是個結果集,那么dot-net中的結果集是什么呢?常用的有這樣兩個:dataTable和dataSet。
從表面看這兩個分別是數據的表和數據的集合。兩者的區別是:dataTable就是一個放在內存中存放數據的表,查詢出來后若要將結果顯示在某個控件上,只需指定數據源為dataTable的對象;而dateSet是表的集合,也就是說dataSet中可以放n個dataTable,查詢時可以同時返回兩個dataTable,在指定數據源時就要指定是dataSet中的哪個dataTable。比如有一個dataSet對象ds,那么指定數據源時就要這樣寫:ds.Tables[index]。查詢結束之后就要及時關閉連接:conn.close()。
下面就來做一個登陸界面來熟悉對數據庫的查詢操作:
C#如何連接數據庫?首先創建數據庫capucivar和表users,并在表中添加一行數據:
- create database capucivar
- create table users
- (
- uid int primary key identity(1,1),
- username varchar(100),
- userpass varchar(100)
- )
- insert into users(username,userpass) values('aaa','aaa')
新建一個解決方案,然后在解決方案里添加項目。因為是與用戶交互的圖形界面,所以操作與以前有所不同,這次就要選擇windows 應用程序。
在界面的左邊是wingdows窗體的控件,如果需要那個控件只需要將它拖放至右邊的窗體上即可,***將控件的name屬性也改一下。界面做好之后,如果那個控件需要有一個監聽事件,鼠標右擊屬性,右下角就會出現控件的屬性和事件,選中相應的事件后雙擊直接進入代碼編寫相應代碼就可以了。
我們拖放兩個Lable(標簽),兩個TextBox(單行文本框)和一個button(按鈕),做好一個簡單的登陸界面。注意:對于密碼框不應該明文顯示,應該以“*”或其它的代替,所以要將它的屬性passwordchar改為“*”。
下面寫數據庫的連接即查詢,因為數據庫操作是經常要進行的,所以一般習慣將對數據庫的連接和操作單獨作一個項目:
- using System;
- using System.Collections.Generic;
- using System.Text;
- using System.Data;// System.Data和System.Data.OleDb一定要導入
- using System.Data.OleDb;
- namespace Db //命名空間
- {
- public class ConnDb
- {
- OleDbConnection conn = null;//定義連接對象為null
- public ConnDb()//構造函數
- {
- if (conn==null)
- {
- conn = new OleDbConnection();
- conn.ConnectionString="provider=sqloledb.1;data source=.;initial catalog=capucivar;user id=sa;pwd=";
- }
- if (conn.State == ConnectionState.Closed)
- {//如果連接的狀態是關閉的話
- conn.Open();//打開連接
- }
- }
- public DataSet query(string sql)
- {
- DataSet ds = new DataSet();//創建dataSet對象
- OleDbDataAdapter da = new OleDbDataAdapter(sql,conn);//適配器,用于填充dataSet或dataTable
- da.Fill(ds);//使用Fill()方法填充dataSet
- connClose();//關閉連接
- return ds;//返回DataSet
- }
- public void connClose()//關閉連接的方法
- {//先判斷連接是否關閉,如果沒有關閉就將它關閉
- if (conn.State == ConnectionState.Open)
- {
- conn.Close();//關閉連接
- } } } }
在已經做好的圖形用戶界面,選中一個控件,鼠標右擊屬性。右下角找到按鈕的點擊事件后雙擊該事件(此處只需要雙擊按鈕)直接進入代碼編寫相應響應事件代碼。完整代碼如下:
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Text;
- using System.Windows.Forms;
- namespace login//命名控件
- {
- public partial class Form1 : Form
- {
- public Form1()
- {
- InitializeComponent();
- }
- private void login_but_Click(object sender, EventArgs e)//按鈕的單擊事件
- {
- //得到用戶輸入的用戶名和密碼
- string name = this.name_text.Text;
- string pass = this.pass_text.Text;
- //寫sql語句
- string sql =string.Format("select * from users where username='{0}' and userpass='{1}'",name,pass);
- DataSet ds = new Db.ConnDb().query(sql);
- if (ds.Tables[0].Rows.Count > 0)
- {// ds.Tables[0].Rows.Count是結果集的行數
- MessageBox.Show("登陸成功!");
- }
- else
- {
- MessageBox.Show("登錄失敗!");
- } } } }
Ctrl+F5執行,先輸入正確的“aaa”和“aaa”,執行結果如下:
然后填入一個錯誤的,執行結果如下:
一個簡單的從數據庫中查詢就做好了。至于增刪改capucivar將在下一篇文章中詳細闡述。
淺析C#如何連接數據庫實現查詢功能就介紹到這里。
【編輯推薦】