溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

C#連接數(shù)據(jù)庫實現(xiàn)查詢的方法

發(fā)布時間:2021-06-16 11:31:03 來源:億速云 閱讀:472 作者:chen 欄目:編程語言

本篇內(nèi)容主要講解“C#連接數(shù)據(jù)庫實現(xiàn)查詢的方法”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學(xué)習(xí)“C#連接數(shù)據(jù)庫實現(xiàn)查詢的方法”吧!

C#如何連接數(shù)據(jù)庫實現(xiàn)查詢功能?首先要求是進行驅(qū)動連接,連接好數(shù)據(jù)庫后,就只剩下對數(shù)據(jù)庫的訪問了。查詢可以參考一般數(shù)據(jù)庫的查詢。

數(shù)據(jù)庫操作四大步驟

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中,對數(shù)據(jù)庫的訪問有兩種方式:oledb和sqlclient。兩種連接數(shù)據(jù)庫方式的不同之處是:oledb適合訪問各種各樣的數(shù)據(jù)庫,而sqlclient只適用于sql server數(shù)據(jù)庫,就訪問速度而言這兩種連接方式自然是sqlclient連接方式速度比較快,而相對也能夠用范圍來講則是oledb連接方式較好。下面capucivar將使用oledb連接方式來對數(shù)據(jù)庫進行訪問。

在連接數(shù)據(jù)庫之前需要導(dǎo)兩個包:System.Date和System.Date.Oledb。連接數(shù)據(jù)庫就要創(chuàng)建一個連接對象OleDbConnection conn = new OleDbConnection();,然后就要寫連接數(shù)據(jù)庫的字符串了:conn.ConnectionString="provider=sqloledb.1;data source=.;initial catalog=dbname;user id=username;pwd=password";連接字符串一共有五部分:1、指明驅(qū)動2、指明數(shù)據(jù)源,即數(shù)據(jù)庫所在的地址3、指定連接那個數(shù)據(jù)庫4、用戶名5、密碼。接下來就該打開這個連接了:conn.open()。這樣就連接好了數(shù)據(jù)庫,剩下的就是對數(shù)據(jù)庫進行訪問了。首先來做一個查詢,既然是查詢,先不管怎么查詢,我們知道查詢出來的數(shù)據(jù)一定是個結(jié)果集,那么dot-net中的結(jié)果集是什么呢?常用的有這樣兩個:dataTable和dataSet。

從表面看這兩個分別是數(shù)據(jù)的表和數(shù)據(jù)的集合。兩者的區(qū)別是:dataTable就是一個放在內(nèi)存中存放數(shù)據(jù)的表,查詢出來后若要將結(jié)果顯示在某個控件上,只需指定數(shù)據(jù)源為dataTable的對象;而dateSet是表的集合,也就是說dataSet中可以放n個dataTable,查詢時可以同時返回兩個dataTable,在指定數(shù)據(jù)源時就要指定是dataSet中的哪個dataTable。比如有一個dataSet對象ds,那么指定數(shù)據(jù)源時就要這樣寫:ds.Tables[index]。查詢結(jié)束之后就要及時關(guān)閉連接:conn.close()。

下面就來做一個登陸界面來熟悉對數(shù)據(jù)庫的查詢操作:

C#如何連接數(shù)據(jù)庫?首先創(chuàng)建數(shù)據(jù)庫capucivar和表users,并在表中添加一行數(shù)據(jù):

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 應(yīng)用程序。

在界面的左邊是wingdows窗體的控件,如果需要那個控件只需要將它拖放至右邊的窗體上即可,***將控件的name屬性也改一下。界面做好之后,如果那個控件需要有一個監(jiān)聽事件,鼠標右擊屬性,右下角就會出現(xiàn)控件的屬性和事件,選中相應(yīng)的事件后雙擊直接進入代碼編寫相應(yīng)代碼就可以了。

我們拖放兩個Lable(標簽),兩個TextBox(單行文本框)和一個button(按鈕),做好一個簡單的登陸界面。注意:對于密碼框不應(yīng)該明文顯示,應(yīng)該以“*”或其它的代替,所以要將它的屬性passwordchar改為“*”。

下面寫數(shù)據(jù)庫的連接即查詢,因為數(shù)據(jù)庫操作是經(jīng)常要進行的,所以一般習(xí)慣將對數(shù)據(jù)庫的連接和操作單獨作一個項目:

using System;  using System.Collections.Generic;  using System.Text;  using System.Data;// System.Data和System.Data.OleDb一定要導(dǎo)入  using System.Data.OleDb;  namespace Db //命名空間  {  public class ConnDb  {  OleDbConnection conn = null;//定義連接對象為null  public ConnDb()//構(gòu)造函數(shù)  {  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)  {//如果連接的狀態(tài)是關(guān)閉的話  conn.Open();//打開連接  }  }  public DataSet query(string sql)  {  DataSet ds = new DataSet();//創(chuàng)建dataSet對象  OleDbDataAdapter da = new OleDbDataAdapter(sql,conn);//適配器,用于填充dataSet或dataTable  da.Fill(ds);//使用Fill()方法填充dataSet  connClose();//關(guān)閉連接  return ds;//返回DataSet  }  public void connClose()//關(guān)閉連接的方法  {//先判斷連接是否關(guān)閉,如果沒有關(guān)閉就將它關(guān)閉  if (conn.State == ConnectionState.Open)  {  conn.Close();//關(guān)閉連接  } } } }

在已經(jīng)做好的圖形用戶界面,選中一個控件,鼠標右擊屬性。右下角找到按鈕的點擊事件后雙擊該事件(此處只需要雙擊按鈕)直接進入代碼編寫相應(yīng)響應(yīng)事件代碼。完整代碼如下:

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是結(jié)果集的行數(shù)  MessageBox.Show("登陸成功!");  }  else  {  MessageBox.Show("登錄失??!");  } } } }

Ctrl+F5執(zhí)行,先輸入正確的“aaa”和“aaa”,執(zhí)行結(jié)果如下:

然后填入一個錯誤的,執(zhí)行結(jié)果如下:

一個簡單的從數(shù)據(jù)庫中查詢就做好了。至于增刪改capucivar將在下一篇文章中詳細闡述。

到此,相信大家對“C#連接數(shù)據(jù)庫實現(xiàn)查詢的方法”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI