連接數(shù)據(jù)庫有兩種方法:
使用數(shù)據(jù)源配置向?qū)нB接
通過編寫程序代碼來連接
使用“數(shù)據(jù)源配置向?qū)А碑a(chǎn)生數(shù)據(jù)集進行連接數(shù)據(jù)庫
創(chuàng)建窗體后,點擊view查看菜單后選擇other 其他窗口,展開第二層菜單選項,點擊數(shù)據(jù)源指令,打開“數(shù)據(jù)源窗口”:
數(shù)據(jù)源配置向?qū)?/p>
在數(shù)據(jù)源窗口點擊左上角的圖標“添加新數(shù)據(jù)源”,打開“數(shù)據(jù)源配置向?qū)А贝翱冢?/p>
數(shù)據(jù)源配置向?qū)Т翱?/p>
選擇數(shù)據(jù)源類型,選擇數(shù)據(jù)庫,單擊next下一步:
選擇數(shù)據(jù)源類型
選擇數(shù)據(jù)集,單擊next下一步:
選擇數(shù)據(jù)集
選擇數(shù)據(jù)連接,單擊new 新建連接按鈕,進入選擇數(shù)據(jù)源對話框:
選擇數(shù)據(jù)連接
在數(shù)據(jù)源中選擇“ file”,單擊ok按鈕進入添加連接對話框:
添加連接
點擊瀏覽按鈕加入一個數(shù)據(jù)庫:
連接數(shù)據(jù)庫
單擊test 測試連接按鈕,顯示測試連接成功的消息框:
測試連接
下一步后,由于數(shù)據(jù)庫文件并非與項目在同一文件夾下,所以會顯示以下警告信息,提示是否要把數(shù)據(jù)庫復制到當前的項目中,單擊“是”繼續(xù):
把數(shù)據(jù)庫復制到當前的項目中
接著,勾選yes,save the as復選框,將連接字符串保存到應用程序配置文件當中,單擊next繼續(xù):
保存連接字符串
所有的數(shù)據(jù)表都在當中,展開數(shù)據(jù)表后,勾選所需要的數(shù)據(jù)表:
數(shù)據(jù)表
點擊完成即可,此時可以看到數(shù)據(jù)庫加入到了項目當中。此時,可以查看數(shù)據(jù)庫中的數(shù)據(jù),右鍵點擊鼠標選擇 data:
查看數(shù)據(jù)表
查看數(shù)據(jù)表中的數(shù)據(jù):
查看數(shù)據(jù)表中的數(shù)據(jù)
通過程序代碼連接數(shù)據(jù)庫,進行提取存入數(shù)據(jù)
用程序代碼來實現(xiàn)與數(shù)據(jù)庫的連接,并進行提取和存入數(shù)據(jù),包含以下四個步驟:
導入相關(guān)的命名空間
用對象來連接數(shù)據(jù)庫
創(chuàng)建對象,并執(zhí)行結(jié)構(gòu)查詢語句
用對象來獲取查詢結(jié)果
導入命名空間:
使用.Data.OleDb命名空間,適用于數(shù)據(jù)庫c查詢access數(shù)據(jù)庫,.data.oledb命名空間的常用類如下:
OleDbCommand(針對數(shù)據(jù)源執(zhí)行的SQL語句或者存儲過程)
OleDbConnection(建立數(shù)據(jù)源的連接)
OleDbDataAdapter(數(shù)據(jù)命令集和數(shù)據(jù)庫連接,用來填入DataSet并更新數(shù)據(jù)源)
OleDbDataReader(提供數(shù)據(jù)源讀取數(shù)據(jù)行的方法)
創(chuàng)建項目后,如果想要連接數(shù)據(jù)庫,則必須導入.Data.OleDb命名空間:
using System.Data.OleDb;
用對象連接數(shù)據(jù)庫:
不同的數(shù)據(jù)庫需要不同的對象,數(shù)據(jù)庫使用OLEDB,所以要用 對象來創(chuàng)建連接,其構(gòu)造函數(shù)的語法是:
public oledbconnection(string connectionstring);
表示用來打開數(shù)據(jù)庫的連接。所以,要用類來創(chuàng)建對象并指定連接的字符串。
下面來創(chuàng)建對象conn,并指定連接字符串:
OleDbConnection conn;
conn=new OleDbConnection(connstring);
這里面為指定數(shù)據(jù)源的連接字符串:
connstring = "Provider=microsoft.ace.oledb.12.0;Data Source=G:\data.accdb"
屬性:如果使用以后的版本,則用“.ace.oledb.12.0”c查詢access數(shù)據(jù)庫,否則對于低版本的則使用“.jet.oledb.4.0”
Data 屬性:數(shù)據(jù)源,指定目標文件所在路徑
在完成對象創(chuàng)建后,用Open方法來打開數(shù)據(jù)庫:
OleDbConnection類的常用成員有:

ConnectionString,獲取或者設置打開數(shù)據(jù)庫的字符串
ConnectionTimeout:產(chǎn)生錯誤前嘗試終止連接的等待時間
Database:獲取或設置要連接的數(shù)據(jù)庫名稱
DataSource:獲取或設置要連接的數(shù)據(jù)源名稱
Provider:獲取連接字符串
Close():關(guān)閉數(shù)據(jù)庫的連接
Dispose():釋放所占用的資源
Open():打開數(shù)據(jù)庫的連接
連接數(shù)據(jù)庫后,就可以讀取數(shù)據(jù)庫中數(shù)據(jù)表中的數(shù)據(jù)。
可以使用類進行載入數(shù)據(jù),下面這段程序代碼就可以實現(xiàn)數(shù)據(jù)的讀取任務了,不過要在界面放入一個控件,可以借助它來顯示數(shù)據(jù)庫中的內(nèi)容,請看下面的代碼:
string connstring;
OleDbConnection conn;
connstring = @"Provider = microsoft.ace.oledb.12.0;Data Source = F: \學生數(shù)據(jù)庫.accdb";
conn=new OleDbConnection(connstring);
OleDbDataAdapter copp = new OleDbDataAdapter("select * from 學生信息表", conn);
DataSet ds = new DataSet();
copp.Fill(ds, "學生信息表");
this.dataGridView1.DataSource = ds.Tables["學生信息表"].DefaultView;
conn.Close();
conn.Dispose();
上面值得說明的是類的方法Fill的作用是將數(shù)據(jù)表的數(shù)據(jù)加載到對象中,然后指定控件的屬性顯示數(shù)據(jù)表中的內(nèi)容:
this.dataGridView1.DataSource = ds.Tables["學生信息表"].DefaultView;
運行程序:
運行
點擊讀取數(shù)據(jù)庫:
讀取數(shù)據(jù)
數(shù)據(jù)表更新操作
建立連接數(shù)據(jù)庫:
connstring = @"Provider = microsoft.ace.oledb.12.0;Data Source =G:\personal\個人數(shù)據(jù)庫.accdb";
conn=new OleDbConnection(connstring);
打開已經(jīng)建立連接的數(shù)據(jù)庫:
conn.Open();
通過寫查詢語句,查詢語句語法格式與數(shù)據(jù)庫基本相同:
CommandText = "update 學生信息 set 所在城市='北京' where 姓名 like '%張%'";
此語句是將學生信息表中姓張的同學住所都改成了北京。
通過運行查詢語句:
ExecuteNonQuery();
當運行程序時已經(jīng)對建立連接數(shù)據(jù)庫中的數(shù)據(jù)進行了修改。
關(guān)閉釋放連接:
conn.Close();
conn.Dispose();
運行程序:
更新數(shù)據(jù)庫
點擊運行后,打開數(shù)據(jù)庫:
修改前:
修改前數(shù)據(jù)
修改之后,姓張的住所修改成了北京:
修改后數(shù)據(jù)
完整程序代碼:
namespace connectionaccess
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
//OleDbConnection(string connectionstring);
string connstring;
OleDbCommand aa = new OleDbCommand();
OleDbConnection conn;
connstring = @"Provider = microsoft.ace.oledb.12.0;Data Source =G:\personal\個人數(shù)據(jù)庫.accdb";
conn=new OleDbConnection(connstring);

//OleDbDataAdapter copp = new OleDbDataAdapter("update 學生信息 set 所在城市='北京' ", conn);
conn.Open();
aa.Connection = conn;
aa.CommandText = "update 學生信息 set 所在城市='北京128' where 姓名 like '%張%'";
aa.ExecuteNonQuery();
//DataSet ds = new DataSet();
//copp.UpdateCommand.UpdatedRowSource;
//copp.Fill(ds, "學生信息表");
//this.dataGridView1.DataSource = ds.Tables["學生信息表"].DefaultView;
conn.Close();
conn.Dispose();
//conn.Open();
MessageBox.Show("運行結(jié)束");
}
}
}
利用變量查詢字符串數(shù)據(jù)
變量與常量不同,變量的值在程序運行過程中可以隨時改變,在數(shù)據(jù)庫系統(tǒng)應用程序開發(fā)中,可能將相應的數(shù)據(jù)經(jīng)過一系列的運算后賦給一個變量,因此,在查詢中對于變量的查詢也是非常重要的,下面介紹變量字符串數(shù)據(jù)的查詢。
根據(jù)用戶輸入的查詢信息,生成數(shù)據(jù)庫查詢字符串,從而實現(xiàn)變量字符串的查詢。
打開 C#開發(fā)環(huán)境,新建一個窗體應用程序,對窗體進行簡單設計,添加一個控件,一個lable控件,一個控件和一個控件,設計布局如下圖:
窗體界面設計
雙擊查詢信息后,鍵入下列程序代碼:
string name = textBox1.Text;定義字符串變量存放輸入信息
string connstring; 定義數(shù)據(jù)庫連接字符串
OleDbConnection conn; 定義數(shù)據(jù)庫連接
connstring =@"provider = microsoft.ace.oledb.12.0;Data Source = F:\個人數(shù)據(jù)庫.accdb";連接個人數(shù)據(jù)庫字符串
conn = new OleDbConnection(connstring);實例化連接
string sq1 = string.Format("select * from 學生信息表 where 姓名='{0}'", name);定義變量條件查詢字符串
OleDbDataAdapter copp = new OleDbDataAdapter(sq1, conn); 定義并實例化數(shù)據(jù)庫對象
DataSet ds = new DataSet(); 定義數(shù)據(jù)集
copp.Fill(ds, sq1);實例化查詢
this.dataGridView1.DataSource = ds.Tables[sq1].DefaultView;顯示查詢結(jié)果
conn.Close();關(guān)閉數(shù)據(jù)庫連接
conn.Dispose();釋放對象
運行程序:
查詢數(shù)據(jù)
輸入學生姓名孫菲菲,點擊查詢信息:
查詢信息
只顯示孫菲菲的信息,通過輸入不同學生姓名,可實現(xiàn)不同變量的信息查詢。
核心語句為:
sq1 = .(" * from 學生信息表 where 姓名='{0}'", name);通過設置不確定的姓名變量name來實現(xiàn)不同學生信息的查詢
完整程序代碼如下:
namespace connectionaccess
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
string name = textBox1.Text;
string connstring;
OleDbConnection conn;
connstring =@"provider = microsoft.ace.oledb.12.0;Data Source = F:\個人數(shù)據(jù)庫.accdb";
conn = new OleDbConnection(connstring);
string sq1 = string.Format("select * from 學生信息表 where 姓名='{0}'", name);
OleDbDataAdapter copp = new OleDbDataAdapter(sq1, conn);
DataSet ds = new DataSet();
copp.Fill(ds, sq1);
this.dataGridView1.DataSource = ds.Tables[sq1].DefaultView;
conn.Close();
conn.Dispose();
}
}
}
結(jié)語:喜歡的請關(guān)注、轉(zhuǎn)發(fā)、收藏、點贊!