最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#連接數(shù)據(jù)庫和更新數(shù)據(jù)庫的方法

 更新時間:2015年08月14日 12:31:54   投稿:lijiao  
這篇文章主要介紹了C#連接數(shù)據(jù)庫和更新數(shù)據(jù)庫的方法,需要的朋友可以參考下

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

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

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

下面就做一個例子熟悉對數(shù)據(jù)庫的更新:

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

 

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

public class ConnDb

  { OleDbConnection conn = null;//連接數(shù)據(jù)庫的對象

//下面是構造函數(shù)連接數(shù)據(jù)庫

    public ConnDb()

    { if (conn==null)//判斷連接是否為空

      { conn = new OleDbConnection();

      conn.ConnectionString="provider=sqloledb.1;data source=.;initial catalog=capucivar;user id=sa;pwd=";//連接數(shù)據(jù)庫的字符串 }

      if (conn.State == ConnectionState.Closed)

      { conn.Open();//打開數(shù)據(jù)庫連接

      } }

//下面這個方法是從數(shù)據(jù)庫中查找數(shù)據(jù)的方法

    public DataSet query(string sql)

    { DataSet ds = new DataSet();//DataSet是表的集合

      OleDbDataAdapter da = new OleDbDataAdapter(sql,conn);//從數(shù)據(jù)庫中查詢

      da.Fill(ds);//將數(shù)據(jù)填充到DataSet

      connClose();//關閉連接

      return ds;//返回結果

    }

//下面的方法是對數(shù)據(jù)庫進行更新

    public int update(string sql)

    {OleDbCommand oc = new OleDbCommand();//表示要對數(shù)據(jù)源執(zhí)行的SQL語句或存儲過程

      oc.CommandText = sql;//設置命令的文本

      oc.CommandType = CommandType.Text;//設置命令的類型

      oc.Connection = conn;//設置命令的連接

      int x=oc.ExecuteNonQuery();//執(zhí)行SQL語句

      connClose();//關閉連接

      return x;  //返回一個影響行數(shù)

    }

//下面的connClose()方法是關閉數(shù)據(jù)庫連接

    public void connClose()

    { if (conn.State == ConnectionState.Open)

      {//判斷數(shù)據(jù)庫的連接狀態(tài),如果狀態(tài)是打開的話就將它關閉

        conn.Close();  }  } }

對數(shù)據(jù)庫的操作類寫好了。然后就來實現(xiàn)增刪改的功能:

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

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語句將該用戶信息插入到數(shù)據(jù)庫中

      int x = new Db.ConnDb().update(sql);//通過ConnDb()對象的update()方法執(zhí)行sql語句并返回一個影響行數(shù)

      if (x > 0)

      {//如果影響行數(shù)大于0則說明插入成功,否則的話插入失敗

        MessageBox.Show("添加成功!");

      } else {

        MessageBox.Show("添加失?。?);

      } }

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

public void refurbish()

  { string sql = "select * from users";//sql語句查詢數(shù)據(jù)

    DataSet ds = new Db.ConnDb().query(sql);//查詢返回一個DataSet

    this.listBox1.DisplayMember = "username";//listBox中要顯示的列

  this.listBox1.DataSource=ds.Tables[0];// listBox的數(shù)據(jù)源

 }

執(zhí)行結果如下:

 

而當客戶選中右邊的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()方法返回影響行數(shù)

      if (x > 0)

      {//根據(jù)返回的影響行數(shù)判斷刪除是否成功

        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()//無參構造函數(shù)

    { InitializeComponent(); }

    public upd(string uname)//有參構造函數(shù)

    { 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);//返回所受影響行數(shù)

      if (x > 0)

      {//根據(jù)影響行數(shù)判斷修改是否成功

        MessageBox.Show("修改成功!");

        this.Visible = false;//將該頁面隱藏

      } else {

        MessageBox.Show("修改失?。?);

        return; } }

    private void button2_Click(object sender, EventArgs e){//點擊“取消”按鈕所響應的事件

      this.Visible = false;//將該頁面隱藏

    } }}

 

修改的結果如下:

 

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

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

相關文章

  • 區(qū)分c# 前臺和后臺線程

    區(qū)分c# 前臺和后臺線程

    這篇文章主要介紹了c# 前臺線程和后臺線程的區(qū)別與聯(lián)系,文中講解非常細致,代碼幫助大家更好的理解和學習,感興趣的朋友可以了解下
    2020-07-07
  • C#中異步回調函數(shù)用法實例

    C#中異步回調函數(shù)用法實例

    這篇文章主要介紹了C#中異步回調函數(shù)用法,實例分析了異步回調函數(shù)的定義及使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-04-04
  • c#中的泛型委托詳解

    c#中的泛型委托詳解

    本文主要介紹了c#中的泛型委托。具有很好的參考價值,下面跟著小編一起來看下吧
    2017-01-01
  • C#索引器介紹

    C#索引器介紹

    這篇文章主要介紹了C#索引器介紹,索引器是一種特殊的類成員,它能夠讓對象以類似數(shù)組的方式來存取,使程序看起來更為直觀,更容易編寫,需要的朋友可以參考下
    2014-10-10
  • C#實現(xiàn)位圖轉換成圖標的方法

    C#實現(xiàn)位圖轉換成圖標的方法

    這篇文章主要介紹了C#實現(xiàn)位圖轉換成圖標的方法,可實現(xiàn)將bmp格式位圖轉換成ico格式圖標的功能,需要的朋友可以參考下
    2015-06-06
  • C#開發(fā)的人臉左右相似度計算軟件源碼分析

    C#開發(fā)的人臉左右相似度計算軟件源碼分析

    這篇文章主要介紹了C#開發(fā)的人臉左右相似度計算軟件,較為詳細的分析了相似度計算的相關原理與具體實現(xiàn)技巧,需要的朋友可以參考下
    2015-04-04
  • C#自定義事件及用法實例

    C#自定義事件及用法實例

    這篇文章主要介紹了C#自定義事件及用法,實例分析了C#中自定義事件的定義與使用技巧,需要的朋友可以參考下
    2015-05-05
  • C#實現(xiàn)將聊天數(shù)據(jù)發(fā)送加密

    C#實現(xiàn)將聊天數(shù)據(jù)發(fā)送加密

    這篇文章主要為大家詳細介紹了如何利用C#實現(xiàn)將聊天數(shù)據(jù)發(fā)送加密的功能,文中的示例代碼講解詳細,對我們學習C#有一定的幫助,感興趣的小伙伴可以跟隨小編一起了解一下
    2022-12-12
  • C#實現(xiàn)掃描槍掃描二維碼并打印(實例代碼)

    C#實現(xiàn)掃描槍掃描二維碼并打印(實例代碼)

    這篇文章主要介紹了C#實現(xiàn)掃描槍掃描二維碼并打印,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-01-01
  • 基于C#實現(xiàn)獲取本地磁盤目錄

    基于C#實現(xiàn)獲取本地磁盤目錄

    這篇文章主要為大家詳細介紹了如何利用C#實現(xiàn)獲取本地磁盤目錄的功能,文中的示例代碼講解詳細,對我們學習C#有一定的幫助,感興趣的小伙伴可以跟隨小編一起了解一下
    2022-12-12

最新評論

汝阳县| 惠东县| 宣化县| 叙永县| 拜泉县| 洛川县| 溧阳市| 隆子县| 珠海市| 赣榆县| 永川市| 怀安县| 南和县| 邛崃市| 武山县| 池州市| 徐闻县| 富锦市| 青岛市| 泰安市| 宣恩县| 麻城市| 招远市| 鹿泉市| 门头沟区| 平湖市| 永嘉县| 合江县| 横峰县| 龙泉市| 嵊州市| 襄垣县| 旺苍县| 内丘县| 正安县| 肥城市| 泾川县| 惠州市| 金塔县| 东乡县| 墨江|