亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

C#連接數據庫和更新數據庫的方法

2020-01-24 01:32:29
字體:
來源:轉載
供稿:網友

對數據庫的操作總體可以分為兩類:查詢(select)和更新(insert,delete,update)。為什么這樣來分呢?仔細看看兩類的區別,select只是從數據庫中將數據拿出來使用,而其余三者都會對數據庫的物理數據進行修改。這篇文章將接著闡述更新數據。

更新數據庫信息首先是連接數據庫,對數據庫的更新需要一個對象:OleDbCommand。該對象表示要對數據源執行的SQL語句或存儲過程。

這個對象有三個屬性:1、CommandText表示要設置命令的文本;2、Connection表示要設置命令的連接;3、CommandType表示設置命令的類型,默認的是Sql語句(但如果不是執行sql語句,就一定要指定命令的類型)。OleDbCommand對象設置好以后,就該執行sql語句了。方法ExecuteNonQuery()就是執行sql語句。如果記不住這個方法,教你一個簡單的記法:將“ExecuteNonQuery”單詞分為三部分,就是“執行不查詢”,那就是更新數據了。

下面就做一個例子熟悉對數據庫的更新:

先使用Visual Studio2005做出如下界面:

 

界面做好以后就相當于做了一個空殼子。接下來就是往里邊添加事件了。我們還要借用上篇文章中的ConnDb類,在該類里添加一個方法:update()對數據庫進行更新,該方法里有一個參數string sql。

public class ConnDb  { OleDbConnection conn = null;//連接數據庫的對象//下面是構造函數連接數據庫    public ConnDb()    { 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)      { conn.Open();//打開數據庫連接      } }//下面這個方法是從數據庫中查找數據的方法    public DataSet query(string sql)    { DataSet ds = new DataSet();//DataSet是表的集合      OleDbDataAdapter da = new OleDbDataAdapter(sql,conn);//從數據庫中查詢      da.Fill(ds);//將數據填充到DataSet      connClose();//關閉連接      return ds;//返回結果    }//下面的方法是對數據庫進行更新    public int update(string sql)    {OleDbCommand oc = new OleDbCommand();//表示要對數據源執行的SQL語句或存儲過程      oc.CommandText = sql;//設置命令的文本      oc.CommandType = CommandType.Text;//設置命令的類型      oc.Connection = conn;//設置命令的連接      int x=oc.ExecuteNonQuery();//執行SQL語句      connClose();//關閉連接      return x;  //返回一個影響行數    }//下面的connClose()方法是關閉數據庫連接    public void connClose()    { if (conn.State == ConnectionState.Open)      {//判斷數據庫的連接狀態,如果狀態是打開的話就將它關閉        conn.Close();  }  } }

對數據庫的操作類寫好了。然后就來實現增刪改的功能:

理一下思路,先添加一個用戶,如何編寫代碼:1、得到客戶所填的數據(用戶名和密碼);2、編寫insert語句,將用戶信息通過ConnDb()類添加到數據庫中;3、返回一個影響行數以便通知客戶執行是否成功。代碼如下:

private void add_but_Click(object sender, EventArgs e)    {//按鈕單擊事件//得到用戶所填的用戶名和密碼string uname = this.uname_text.Text;      string upass = this.upass_text.Text;      string sql = string.Format("insert into users values('{0}','{1}')",uname,upass);//拼寫sql語句將該用戶信息插入到數據庫中      int x = new Db.ConnDb().update(sql);//通過ConnDb()對象的update()方法執行sql語句并返回一個影響行數      if (x > 0)      {//如果影響行數大于0則說明插入成功,否則的話插入失敗        MessageBox.Show("添加成功!");      } else {        MessageBox.Show("添加失?。?);      } }

添加一個用戶之后,在右邊的listBox中顯示出來:

public void refurbish()  { string sql = "select * from users";//sql語句查詢數據    DataSet ds = new Db.ConnDb().query(sql);//查詢返回一個DataSet    this.listBox1.DisplayMember = "username";//listBox中要顯示的列  this.listBox1.DataSource=ds.Tables[0];// listBox的數據源 }

執行結果如下:

 

而當客戶選中右邊的listBox中的一個選項時,可以進行相應的刪除或修改。刪除的代碼如下:

private void del_but_Click(object sender, EventArgs e)    {string uname = this.listBox1.Text;//得到listBox中所選的值      string sql = string.Format("delete from users where username='{0}'",uname);//拼寫sql語句刪除用戶      int x = new Db.ConnDb().update(sql);//調用update()方法返回影響行數      if (x > 0)      {//根據返回的影響行數判斷刪除是否成功        MessageBox.Show("刪除成功!");      } else{     MessageBox.Show("刪除失?。?);  } } 

刪除之后的結果如下:

 

在點擊“更新”按鈕之后,應該彈出一個窗口顯示客戶所選用戶的信息供客戶更新。更新的代碼如下:

private void upa_but_Click(object sender, EventArgs e) { string uname = this.listBox1.Text;//得到listBox中所選的用戶信息  new upd(uname).ShowDialog();//彈出要更新窗口upd.cs }upd.cs的代碼如下:  public partial class upd : Form  { public upd()//無參構造函數    { InitializeComponent(); }    public upd(string uname)//有參構造函數    { InitializeComponent();    this.uname_text.Text = uname;//將用戶名放到文本框      string sql = string.Format("select * from users where username='{0}'", uname);//拼寫sql語句通過用戶名查找用戶的信息      DataSet ds = new Db.ConnDb().query(sql);//下面得到結果集中的信息分別放至相應文本框中      this.uid_text.Text = ds.Tables[0].Rows[0][0].ToString();      this.upass_text.Text = ds.Tables[0].Rows[0][2].ToString();    }    private void button1_Click(object sender, EventArgs e)//點擊“確認修改”按鈕所響應的事件  {int uid = Convert.ToInt32(this.uid_text.Text);//得到uid      string uname = this.uname_text.Text;//得到用戶名      string upass = this.upass_text.Text;//得到用戶密碼      string sql = string.Format("update users set username='{0}',userpass='{1}' where uid={2}",uname,upass,uid);//拼寫一個修改sql語句      int x = new Db.ConnDb().update(sql);//返回所受影響行數      if (x > 0)      {//根據影響行數判斷修改是否成功        MessageBox.Show("修改成功!");        this.Visible = false;//將該頁面隱藏      } else {        MessageBox.Show("修改失敗!");        return; } }    private void button2_Click(object sender, EventArgs e){//點擊“取消”按鈕所響應的事件      this.Visible = false;//將該頁面隱藏    } }} 

修改的結果如下:

 

在每次對數據庫進行修改之后,界面右邊的listBox中的數據就會更新一次,所以每次對數據庫操作之后都應該調用refurbish()方法。一個簡單的使用C#對數據庫進行增刪改查的代碼就寫完了。

代碼寫的很簡單,只是完成了最簡單的增刪改查功能,大家可以動手操作將上述的代碼更加完善!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
色偷偷偷亚洲综合网另类| 亚洲天堂av在线免费| 日韩av网站在线| 亚洲网站视频福利| 国产精品免费久久久久久| 国产精品av在线播放| 91久久精品国产91性色| 国产成人aa精品一区在线播放| 在线视频日韩精品| 秋霞午夜一区二区| 亚洲国产成人在线视频| 亚洲丝袜一区在线| 日韩二区三区在线| 日韩精品视频在线观看免费| 中文字幕精品久久| 欧美性感美女h网站在线观看免费| 亚洲国产精品va在线观看黑人| 中文字幕日韩欧美在线| 亚洲日韩欧美视频一区| 91午夜理伦私人影院| 国产精品久久在线观看| 亚洲日本欧美中文幕| 亚洲性av网站| 亚洲精品720p| 亚洲精品久久久久国产| 在线国产精品视频| 国产精品久久久久免费a∨大胸| 亚洲最新中文字幕| 成人精品视频99在线观看免费| 亚洲美女在线观看| 亚洲www视频| 亚洲free性xxxx护士白浆| 最近2019中文字幕第三页视频| 久久躁日日躁aaaaxxxx| 日韩av手机在线观看| 91视频免费网站| 欧美三级欧美成人高清www| 久久中文久久字幕| 精品久久久久久亚洲国产300| 欧美丰满少妇xxxx| 日本一区二区不卡| 欧美极品少妇与黑人| 欧美xxxx做受欧美.88| 国产精品中文在线| 欧美激情第6页| 国产成人拍精品视频午夜网站| 亚洲a级在线播放观看| 国产99视频在线观看| 日本精品视频在线播放| 久久久久久久久综合| 亚洲欧美日韩一区在线| 精品久久香蕉国产线看观看gif| 国产精品视频一区二区高潮| 久久久免费精品视频| 亚洲精品电影网站| 亚洲国产精品成人va在线观看| 欧美日韩国产丝袜另类| 自拍偷拍亚洲在线| 亚洲精品永久免费精品| 国产精品观看在线亚洲人成网| 成人美女免费网站视频| 欲色天天网综合久久| 日韩精品在线观看一区| 欧美黄色免费网站| 国产精品亚洲综合天堂夜夜| 国产精品一区二区女厕厕| 国产精品成人免费视频| 欧美激情xxxxx| 国产人妖伪娘一区91| 国产精品aaa| 高清视频欧美一级| 久久久久久久久网站| 国产精品热视频| 九九精品在线观看| 91在线视频一区| 日韩激情片免费| 亚洲激情在线观看视频免费| 热久久美女精品天天吊色| 国产欧美精品一区二区| 日韩精品中文在线观看| 久久人人看视频| yellow中文字幕久久| 国产精品三级网站| 91久久久久久久一区二区| 国产精品女人久久久久久| 国产精品成人免费电影| 亚洲欧洲一区二区三区在线观看| 国产精品18久久久久久麻辣| 欧美激情久久久久| 日本一区二区三区在线播放| 国产视频精品xxxx| 欧美天堂在线观看| 国产成人在线一区| 最近2019中文免费高清视频观看www99| 中文国产成人精品| 国产精品吹潮在线观看| 热re99久久精品国产66热| 亚洲大胆美女视频| 日韩大陆欧美高清视频区| 日韩精品一二三四区| 色综合久久精品亚洲国产| 亚洲色图欧美制服丝袜另类第一页| 57pao成人国产永久免费| 日本韩国欧美精品大片卡二| 久久精彩免费视频| 国产成人在线视频| 亚洲偷熟乱区亚洲香蕉av| 中文字幕欧美日韩va免费视频| 俺去了亚洲欧美日韩| 欧美成人在线免费视频| 欧洲亚洲免费在线| 米奇精品一区二区三区在线观看| 韩国一区二区电影| 国产一区二区黑人欧美xxxx| 久久久久久久久久久免费精品| 欧美视频不卡中文| 国产热re99久久6国产精品| 日韩在线观看免费全| 国产精品揄拍一区二区| 色综合久久中文字幕综合网小说| 日韩av免费在线观看| 一区二区三区视频免费| 欧美成人在线网站| 亚洲国产精品热久久| www.欧美精品一二三区| 日本一区二区不卡| 国模精品视频一区二区三区| 红桃av永久久久| 国内精品久久久久久久久| 欧美日韩色婷婷| 韩剧1988免费观看全集| 日韩国产精品亚洲а∨天堂免| 中文字幕欧美视频在线| 国产精品第一第二| 亚洲第一视频网站| 国产噜噜噜噜久久久久久久久| 国产一区二区视频在线观看| 国产精品老牛影院在线观看| 2025国产精品视频| 国产成人精品亚洲精品| 欧美性生活大片免费观看网址| 久久久久久这里只有精品| 日韩精品亚洲视频| 欧美日韩在线看| 欧美电影《睫毛膏》| 久久久国产在线视频| 久久精品视频播放| 蜜臀久久99精品久久久久久宅男| 岛国av午夜精品| 欧洲s码亚洲m码精品一区| 一区二区三区在线播放欧美| 久久成人人人人精品欧| 久久国产精品久久久久| 亚洲成人av片| 亚洲欧美色婷婷| 亚洲一区av在线播放| 欧美特黄级在线| 日韩免费视频在线观看| 自拍偷拍亚洲精品| 久久久在线视频| 日韩精品中文字幕久久臀| 久久精品在线播放| 亚洲国产精品国自产拍av秋霞| 欧美性极品xxxx娇小|