第二部分,BETA2操作ACCESS資料庫

來源:互聯網
上載者:User
access|資料|資料庫 朋友們好,總算又有時間了,搞了兩天,頭都大了!不過,真的是,。NET的東西太多了,簡直有一種眼花繚亂的感覺,看來還是需要靜下心來慢慢測試!我的學習觀點就是多寫程式,多練習,你可以不去記憶那些在資料或協助上能查到的東西,(我就沒有去記,即使是名字空間如何寫我都是看協助),但一定要理解了,而如何理解,最直接的方法就是通過程式來把那些東西直接展示在眼前!

好了,不多說了,接著上次的東西,我們繼續來看看,如何在。NET中操作資料庫(資料庫採用ACCESS 2000,至於SQL,我在以後有機會了在說吧,其實如果懂了,ACCESS的話,適當變變就可以操作SQL資料庫了!)

上次說了如何在ADO。NET中執行“SELECT”語句,這次我們看看,如何執行“DELETE、UPDATE、INSERT”等語句。

我們這次同樣通過例子來看,其中我們用到了System.Data.OleDb.OleDbCommand類,其實,我們在前面執行SELECT的時候也用到了!

下面我寫出我的程式:

//修改留言本中特定的資料
public Boolean UpdateNote(Notebook note)
{
Boolean tempvalue=false;
       string sqlstr="";    //當時在這裡定義,是為了在出現異常的時候看看我的SQL語句是否正確
       try
{
        //用到了我前面寫的那個得到資料庫連接的函數
            OleDbConnection conn = getConn();     //getConn():得到連線物件,
              conn.Open();
               
        //確定我們需要執行的SQL語句,本處是UPDATE語句!
              sqlstr = "UPDATE notes SET ";
              sqlstr += "title='" + note.title + "',";
              sqlstr += "content='" + DealString(note.content) +"',";
              sqlstr += "author='" + note.author + "',";
              sqlstr += "email='" +note.email +"',";
              sqlstr += "http='" +note.http +"'";
              //sqlstr += "pic='" +note.pic +"'";
              sqlstr += " where id=" + note.id;
               
              //定義command對象,並執行相應的SQL語句
              OleDbCommand myCommand = new OleDbCommand(sqlstr,conn);
           myCommand.ExecuteNonQuery(); //執行SELECT的時候我們是用的ExecuteReader()
           conn.Close();
               
            
              //假如執行成功,則,返回TRUE,否則,返回FALSE
           tempvalue=true;
           return(tempvalue);
      }
       catch(Exception e)
       {
               throw(new Exception("資料庫更新出錯:" +  sqlstr + "\r" + e.Message)) ;
           }
}

這個例子是對於特定ID好的記錄進行UPDATE操作,具體解釋我都寫在了程式中,其中的與資料庫有關的語句是try內部的那些!

其實,我們同樣可以通過上面的那種模式執行INSERT、DELETE操作,下面我把我的程式列到下面!

/*刪除特定記錄,通過string類型的ID刪除欄位,在我的程式中,我把這個函數重載了,這樣我們就可以通過INT類型的ID參數來刪除特定的欄位了*/
        public Boolean DelNote(string delid)
        {
            Boolean tempvalue=false;
            string sqlstr="";
            //串連資料庫
            try
            {
                OleDbConnection conn = getConn();     //getConn():得到連線物件
                conn.Open();
                
                sqlstr = "delete * from notes where id=" + delid;
                
                //定義command對象,並執行相應的SQL語句
                OleDbCommand myCommand = new OleDbCommand(sqlstr,conn);
                myCommand.ExecuteNonQuery();
                conn.Close();
               
            
                //假如執行成功,則,返回TRUE,否則,返回FALSE
                 tempvalue=true;
                 return(tempvalue);
            }
            catch(Exception e)
            {
                throw(new Exception("資料庫更新出錯:" +  sqlstr + "\r" + e.Message)) ;
            }
        }

細心的朋友們應該能看到,其實這個程式和上面的相比,只是哪個SQL語句不同而已,其他的都基本一樣的!同樣的,我們想在資料庫中插入新的記錄的時候也可以用這樣的方式,程式如下:
//向留言本中添加資料
        public Boolean AddNote(Notebook note)
        {
            
            Boolean tempvalue=false;    //定義傳回值,並設定初值
            //下面把note中的資料添加到資料庫中!
            try{
            
                OleDbConnection conn = getConn();     //getConn():得到連線物件
                conn.Open();
            
                //設定SQL語句
                string insertstr="INSERT INTO notes(title, content, author, email, http, pic ,hits,posttime) VALUES ('";
                insertstr +=  note.title +"', '";
                insertstr +=  DealString(note.content) + "','";
                insertstr +=  note.author + "','";
                insertstr +=  note.email + "','";
                insertstr +=  note.http + "','";
                insertstr +=  note.pic + "',";
                insertstr +=  note.hits + ",'";
                insertstr +=  note.posttime +"')";
            
                OleDbCommand insertcmd = new OleDbCommand(insertstr,conn) ;
                insertcmd.ExecuteNonQuery() ;
            
                conn.Close();
                tempvalue=true;
            }
            catch(Exception e)
            {
                throw(new Exception("資料庫出錯:" + e.Message)) ;
            }
            return(tempvalue);
        }
        
        //處理資料,在把資料存到資料庫前,先屏蔽那些危險字元!
        public string DealString(string str)
        {   
            str=str.Replace("<","<");
            str=str.Replace(">",">");
            str=str.Replace("\r","<br>");
            str=str.Replace("\'","’");
            str=str.Replace("\x0020"," ");
           
            return(str);
        }
    
        //恢複資料:把資料庫中的資料,還原成未處理前的樣子
        public string UnDealString(string str)
        {   
            str=str.Replace("<","<");
            str=str.Replace(">",">");
            str=str.Replace("<br>","\r");
            str=str.Replace("’","\'");
            str=str.Replace(" ","\x0020");
            
            return(str);
        }

我同時列出了兩個函數UnDealString()和DealString( ),他們是對與輸入內容做一些事先的處理和還原工作的!

這幾個程式因為都比較簡單,所以我就不多說了!
其實,我這樣的對資料庫操作也只是ADO。NET中的一部分,而通過DataSet來操作我現在還沒有仔細研究過,所以我也不能寫出什麼東西來,以後的這幾天我就準備好好看看那個東西了,到時候,我還會把我的感受寫出來和大家分享!

在補充一下,我前面用到的程式都是我在寫一個留言本的測試程式時候用到的!如果有朋友有興趣的話,我將貼出我的全部學習代碼!

好了,我要開始我的事情了!下次再見!



相關文章

Cloud Intelligence Leading the Digital Future

Alibaba Cloud ACtivate Online Conference, Nov. 20th & 21st, 2019 (UTC+08)

Register Now >

Starter Package

SSD Cloud server and data transfer for only $2.50 a month

Get Started >

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 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。