貼篇文章,BETA2中ACCESS操作資料庫

來源:互聯網
上載者:User
access|資料|資料庫 朋友們好,回家已經有10天了,總算是開始學。NET了,直接的感覺就是MS的協助太差了,好多錯誤在上面,害的我走了好多彎路,結果好多東西還沒有完全搞好,簡直了!
由於BETA2和BETA1比較,變化太大了,而現在無論是書還是網路上的資料基本都還停留在BETA1上,是朋友們在學習的時候遇到好多問題還無處可查,這裡我把我的學習過程中遇到的一些問題和體會拿出來與大家分享,希望能給也在學習過程中的朋友有些協助!

我估計,朋友們在學習。NET的過程中,遇到的最多的問題就是在和資料庫打交道的過程中了!所以這次我準備就從在BETA2中如何操作資料庫開始了,資料庫採用我們最常用的ACCESS資料庫(其實是學習最常用的,實際中我更喜歡SQL資料庫的)

在BETA2中,。NET提供了以下的NAMESPACE:
System.Data Namespace
System.Data.OleDb  (和BETA1中已經不同了,所以如果拿BETA1中的程式到BETA2中來運行肯定不可以的)

如果想講清楚這些東西,我不認為是我可以作到的,所以我想通過一些具體的程式來把我們對資料庫的最基本的操作(SELECT、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="Provider=Microsoft.Jet.OLEDB.4.0 ;Data Source=F:\\web\\notesbook\\class\\leavenotes.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 strCom = "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.email=reader["email"].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類型的對象!


啊呀,太晚了,今天就到這裡,我要休息了,其它幾個操作我在以後在說吧,呵呵,睡覺了!


相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。