C# BETA2中操作ACCESS資料庫 (轉)
BETA2中操作ACCESS(一)
朋友們好,回家已經有10天了,總算是開始學了,直接的感覺就是MS的幫助太差了,好多錯誤在上面,害的我走了好多彎路,結果好多東西還沒有完全搞好,簡直了!
由於BETA2和BETA1比較,變化太大了,而現在無論是書還是上的資料基本都還停留在BETA1上,是朋友們在學習的時候遇到好多問題還無處可查,這裡我把我的學習過程中遇到的一些問題和體會拿出來與大家分享,希望能給也在學習過程中的朋友有些幫助!
我估計,朋友們在學習。NET的過程中,遇到的最多的問題就是在和資料庫打交道的過程中了!所以這次我準備就從在BETA2中如何運算元據庫開始了,資料庫採用我們最常用的ACCESS資料庫(其實是學習最常用的,實際中我更喜歡資料庫的)
在BETA2中,。NET提供了以下的NAMESPACE:
System.Data Namespace
System.Data.Ole (和BETA1中已經不同了,所以如果拿BETA1中的到BETA2中來執行肯定不可以的)
如果想講清楚這些東西,我不認為是我可以作到的,所以我想透過一些具體的程式來把我們對資料庫的最基本的操作(、UPDATE、DELETE、INSERT等)演示一下,其他的還是需要朋友們在學習過程中來慢慢體會了!
要想操作一個資料庫,不論是那種操作,首先要做的肯定是開啟資料庫,下面我們以ACCESS資料庫來做例子說明如何開啟一個資料庫連線!在這裡我們需要用到的是:System.Data.OleDb.OleDbConnection類!(如果操作SQL資料庫,我們最好使用System.Data.SqlClient.SqlConnection類)
我先寫出我自己使用的程式:
using System.Data
using System.Data.OleDb
public OleDbConnection getConn()
{
string connstr="Provr=.Jet.OLEDB.4.0 ;Data =F:notesbookclassleavenotes.mdb";
OleDbConnection tempconn= new OleDbConnection(connstr);
return(tempconn);
}
相信只要使用過ADO的朋友應該都可以看懂的!我們先定義一個String型別的變數,其中存放了我們連線資料庫的連線字串,然後在定義一個System.Data.OleDb.OleDbConnection型別的並例項化,最後返回這個物件!需要說明一下的是,我並沒有把語句:tempconn.Open();放到這個中,原因我我稍後在說明,這裡只是先提醒一下!
透過上面的函式,我們就已經得到了類似於ADO中的連線物件Connection了!下面的就是具體運算元據庫了!
在具體講操作前,我認為有必要先認識一下下面的兩個類:
System.Data.OleDb.OleDbDataAdapter
System.Data.OleDb.OleDbDataReader
System.Data.OleDb.OleDbDataAdapter:可以直接和DataSet聯絡,並運算元據源的,它的功能相對強大一些,因此也比較耗資源!
System.Data.OleDb.OleDbDataReader:則有些類似於ADO中的哪個只讀向前的記錄集,它最常用在只需要依次讀取並顯示資料的時候,相比System.Data.OleDb.OleDbDataAdapter來說,他耗用的系統資源要小!其實,OleDbDataReader能實現的功能,OleDbDataAdapter都可以實現,不過從資源使用率的角度考慮我們應該儘量使用前者!但有些功能,卻是必須使用OleDbDataAdapter才可以實現的!
* SELECT操作!
下面是我的自己在寫測試程式的時候用到了,先列出來看看OleDbDataReader和OleDbDataAdapter是如何操作從資料庫中選擇記錄的:
//透過ID得到當前留言詳細內容.透過STRING型別引數
public Notebook getNoteFromID(string noteid)
{
Notebook tempnote=new Notebook(); //定義返回值
try
{
OleDbConnection conn = getConn(); //getConn():得到連線物件
string str= "Select * from notes where id=" + noteid ;
OleDbCommand myCommand =new OleDbCommand(strCom,conn);
conn.Open();
OleDbDataReader reader;
reader =myCommand.ExecuteReader() ; //command並得到相應的DataReader
//下面把得到的值賦給tempnote物件
if(reader.Read())
{
tempnote.id=(int)reader["id"];
tempnote.title=reader["title"].ToString();
tempnote.content=reader["content"].ToString();
tempnote.author=reader["author"].ToString();
tempnote.e=reader[""].ToString();
tempnote.http=reader["http"].ToString();
tempnote.pic=reader["pic"].ToString();
tempnote.hits=(int)reader["hits"];
tempnote.posttime=(DateTime)reader["posttime"];
}
else //如沒有該記錄,則丟擲一個錯誤!
{
throw(new Exception("當前沒有該記錄!"));
}
reader.Close();
conn.Close();
}
catch(Exception e)
{
//throw(new Exception("資料庫出錯:" + e.Message)) ;
}
return(tempnote); //返回Databook物件
}
上面的程式就是透過OleDbDataReader來得到特定的記錄的!其中用到的語句我單獨寫到下面:
OleDbConnection conn = getConn(); //getConn():得到連線物件
string strCom = "Select * from notes where id=" + noteid ; //SQL語句
OleDbCommand myCommand =new OleDbCommand(strCom,conn); //建立OleDbCommand物件
conn.Open(); //注意我在前面說的Open語句在這裡使用到了!
OleDbDataReader reader;
reader =myCommand.ExecuteReader() ; //執行command並得到相應的結果
我在每句話後都加入了說明,其中OleDbConnection conn = getConn();就是透過我前面提到的getConn函式來得到資料庫連線的,其他語句沒有什麼好說的,都很簡單,就不多說了!
我再列一個透過OleDbDataAdapter來得到記錄的例程:
//Getlist():得到當前需要的留言列表
public DataView getNoteList()
{
DataView dataview;
System.Data.DataSet mydataset; //定義DataSet
try
{
OleDbConnection conn = getConn(); //getConn():得到連線物件
OleDbDataAdapter adapter = new OleDbDataAdapter();
string sqlstr="select * from notes order by posttime desc";
mydataset= new System.Data.DataSet();
adapter.SelectCommand = new OleDbCommand(sqlstr, conn);
adapter.Fill(mydataset,"notes");
conn.Close();
}
catch(Exception e)
{
throw(new Exception("資料庫出錯:" + e.Message)) ;
}
dataview = new DataView(mydataset.Tables["notes"]);
return(dataview);
}
這個程式或許有些複雜,同樣的,我還是先把那些關鍵語句列出,並說明:
OleDbConnection conn = getConn(); //透過函式getConn()得到連線物件
OleDbDataAdapter adapter = new OleDbDataAdapter(); //例項化OleDbDataAdapter物件
string sqlstr="select * from notes order by posttime desc"; //SQL語句
mydataset= new System.Data.DataSet(); //由於OleDbDataAdapter需要和DataSet結合使用,所以在這裡定義了DataSet物件,其實說OleDbDataAdapter複雜,其實就是因為DataSet的緣故DataSet有些類似於ADO中的recordset 物件,但功能遠遠超過了它,而且它和資料庫是斷開的,並能存放多個記錄集!
adapter.SelectCommand = new OleDbCommand(sqlstr, conn); //設定命令為SelectCommand型別的
adapter.Fill(mydataset,"notes"); //執行,並將結果新增到mydataset中的”notes”表中
conn.Close(); //關閉連線!
在對上面的程式加一些補充說明,由於getNoteLista是得到一系列記錄,並透過DataGrid來做分頁顯示的,所以我返回的是一個DataView型別的物件!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-991218/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- C# BETA2中操作ACCESS資料庫(三) (轉)C#資料庫
- C# BETA2中操作ACCESS資料庫(二) (轉)C#資料庫
- C# 操作 access 資料庫C#資料庫
- C#的Access資料庫操作 AccessHelper類C#資料庫
- ACCESS資料庫C#操作類(包含事務)資料庫C#
- 不用JDBC:ODBC bridge直接操作Access 資料庫 (轉)JDBC資料庫
- 轉發:C#操作SQL Server資料庫C#SQLServer資料庫
- 【Rosion L.X】ASP.NET[C#]的ACCESS資料庫操作類ROSASP.NETC#資料庫
- 直接通過ADO操作Access資料庫資料庫
- 用ASP.NET/C#連線Access和SQL Server資料庫 (轉)ASP.NETC#SQLServer資料庫
- 使用C#語言操作ADO資料庫 (轉)C#資料庫
- 在ASP中壓縮ACCESS資料庫資料庫
- ACCESS資料庫防止下載大盤點 (轉)資料庫
- c#資料操作:資料庫訪問 和 檔案操作C#資料庫
- 連線資料之遠端呼叫Access資料庫(轉)資料庫
- ABAP資料庫操作(轉)資料庫
- C#:資料庫SQL操作通用類C#資料庫SQL
- Access資料庫日常維護和Access資料庫最佳化方法資料庫
- [資料庫連線字串] Access 連線字串(轉)資料庫字串
- [資料庫連線字串]Access連線字串(轉)資料庫字串
- 在C、JAVA、PHP中操作postgreSql資料庫 (轉)JavaPHPSQL資料庫
- ASP.NET中防止Access資料庫下載ASP.NET資料庫
- 把ACCESS的資料匯入到Mysql中(轉)MySql
- 資料庫結構操作 (轉)資料庫
- 資料庫操作(1.0.0.1)(續) (轉)資料庫
- 把Access轉成SQL資料庫的方法介紹SQL資料庫
- SQL Server連線ACCESS資料庫的實現 (轉)SQLServer資料庫
- 無限級樹資料庫版(ASP+ACCESS) (轉)資料庫
- Access 匯入 oracle 資料庫Oracle資料庫
- PHP 連線access資料庫PHP資料庫
- java連線access資料庫Java資料庫
- C#操作Access的一些小結C#
- java語言操作Oracle資料庫中的CLOB資料型別 (轉)JavaOracle資料庫資料型別
- C#快速搭建模型資料庫SQLite操作C#模型資料庫SQLite
- C#/Python/MATLAB操作PostgreSQL資料庫C#PythonMatlabSQL資料庫
- Oracle,SqlServer,Access資料庫通用訪問類設計(轉)OracleSQLServer資料庫
- python過濾nginx access日誌存入資料庫中PythonNginx資料庫
- Access資料庫審計工具mdbtools資料庫