C#使用Ado.Net读写数据库

时间:2022-03-16 13:34:48

1.使用DataReader方式读取资料
 

[csharp] view plain copy
  1. String connString = ConfigurationManager.ConnectionStrings["astt"].ConnectionString;  
  2.   
  3.  //如果数据库连接字符串有加密,可以经过解密后重新获得连接字符串  
  4.  DbConnectionStringBuilder connBuilder = new DbConnectionStringBuilder();  
  5.  connBuilder.ConnectionString = connString;  
  6.  connBuilder["Data Source"] = connBuilder["Data Source"];  //可加上解密方法  
  7.  connBuilder["User ID"] = connBuilder["User ID"];          //可加上解密方法  
  8.  connBuilder["Password"] = connBuilder["Password"];        //可加上解密方法  
  9.  connString = connBuilder.ConnectionString;  
  10.   
  11.  using (OleDbConnection conn = new OleDbConnection(connString))  
  12.  {  
  13.      try  
  14.      {  
  15.          conn.Open();  
  16.   
  17.          using (OleDbCommand cmd = new OleDbCommand())  
  18.          {  
  19.              cmd.CommandText = "select * from s_userm where rownum <= ?";  
  20.              cmd.CommandType = CommandType.Text;  
  21.              cmd.Connection = conn;  
  22.              cmd.Parameters.Add("?", OleDbType.Integer).Value = 5;  //cmd.Parameters.Add(new OleDbParameter("?", 5));  
  23.   
  24.              using (OleDbDataReader reader = cmd.ExecuteReader())  
  25.              {  
  26.                  while (reader.Read())  
  27.                  {  
  28.                      MessageBox.Show(reader.GetString(1), "资料");  
  29.                  }  
  30.              }  
  31.          }  
  32.          conn.Close();  
  33.      }  
  34.      catch (Exception ex)  
  35.      {  
  36.          MessageBox.Show(ex.Message, "error");  
  37.          return;  
  38.      }  
  39.  }  


 

2.使用DataAdapter与DataSet方式读取资料.
 

[csharp] view plain copy
  1. String connString = ConfigurationManager.ConnectionStrings["astt"].ConnectionString;  
  2.  using (OleDbConnection conn = new OleDbConnection(connString))  
  3.  {  
  4.      try  
  5.      {  
  6.          using (OleDbCommand cmd = new OleDbCommand())  
  7.          {  
  8.              cmd.CommandText = "select * from s_userm where rownum <= ?";  
  9.              cmd.CommandType = CommandType.Text;  
  10.              cmd.Connection = conn;  
  11.              cmd.Parameters.Add("?", OleDbType.Integer).Value = 5;  //cmd.Parameters.Add(new OleDbParameter("?", 5));  
  12.   
  13.              DataSet ds = new DataSet();  
  14.              OleDbDataAdapter adapter = new OleDbDataAdapter(cmd);  
  15.   
  16.              adapter.Fill(ds, "s_userm");  
  17.   
  18.              foreach (DataRow dr in ds.Tables[0].Rows)  
  19.              {  
  20.                  MessageBox.Show(Convert.ToString(dr["user_nm"]), "资料");  
  21.              }  
  22.   
  23.              //listBox1.DataSource = ds.Tables[0].DefaultView;  
  24.              //listBox1.DisplayMember = "user_nm";  
  25.              //listBox1.ValueMember = "user_no";  
  26.              listBox1.DataSource = ds;  
  27.              listBox1.DisplayMember = "s_userm.user_nm";  
  28.              listBox1.ValueMember = "s_userm.user_no";  
  29.   
  30.              dataGridView1.DataSource = ds.Tables[0].DefaultView;  
  31.              dataGridView1.ReadOnly = true;  
  32.          }  
  33.      }  
  34.      catch (Exception ex)  
  35.      {  
  36.          MessageBox.Show(ex.Message, "error");  
  37.          return;  
  38.      }  
  39.  }  


 

3.使用DataAdapter与DataSet对单表的增删改查,根据Command的查询语法,使用CommandBuilder自动生成增删改的语法.

[csharp] view plain copy
  1. String connString = ConfigurationManager.ConnectionStrings["astt"].ConnectionString;  
  2.   
  3. using (OleDbConnection conn = new OleDbConnection(connString))  
  4. {  
  5.     OleDbCommand cmd = new OleDbCommand();  
  6.     cmd.CommandText = "select * from s_userm where rownum <= ?";  
  7.     cmd.CommandType = CommandType.Text;  
  8.     cmd.Connection = conn;  
  9.     cmd.Parameters.Add("?", OleDbType.Integer).Value = 5;  
  10.     OleDbDataAdapter adapter = new OleDbDataAdapter(cmd);  
  11.   
  12.     //使用DataAdapter更新单表,可以使用CommandBuilder来自动生成InsertCommand,UpdateCommand,DeleteCommand  
  13.     OleDbCommandBuilder cmdbuilder = new OleDbCommandBuilder(adapter); //将自动生成InsertCommand,UpdateCommand,DeleteCommand  
  14.     MessageBox.Show(cmdbuilder.GetUpdateCommand().CommandText, "updcommand");  
  15.   
  16.     //select  
  17.     DataSet ds = new DataSet();  
  18.     adapter.Fill(ds,"s_userm");  
  19.     dataGridView1.DataSource = ds.Tables["s_userm"].DefaultView;  
  20.   
  21.     //insert  
  22.     DataRow updateRow = ds.Tables["s_userm"].NewRow();  
  23.     updateRow["user_no"] = "TEST1";  
  24.     updateRow["user_nm"] = "test1";  
  25.     ds.Tables["s_userm"].Rows.Add(updateRow);  
  26.     adapter.Update(ds, "s_userm");  
  27.   
  28.     MessageBox.Show(Convert.ToString(ds.Tables["s_userm"].Rows[0]["user_no"]), "user");  
  29.   
  30.     //update  
  31.     ds.Tables[0].Rows[1]["EMAIL"] = "gymsoft@163.com";  
  32.     adapter.Update(ds, "s_userm");  
  33.   
  34.     //delete  
  35.     ds.Tables["s_userm"].Rows[0].Delete();  
  36.     adapter.Update(ds, "s_userm");  
  37. }  


 

4.使用DataAdapter与DataSet进行增删改查,手动指定增删改查的语法。
 

[csharp] view plain copy
  1. String connString = ConfigurationManager.ConnectionStrings["astt"].ConnectionString;  
  2.   
  3.  using (OleDbConnection conn = new OleDbConnection(connString))  
  4.  {  
  5.      DataSet ds = new DataSet();  
  6.      OleDbDataAdapter adapter = new OleDbDataAdapter();  
  7.   
  8.      //指定DataAdapter的select语句  
  9.      OleDbCommand selectCmd = new OleDbCommand();  
  10.      selectCmd.CommandText = "select * from s_userm where rownum <= ?";  
  11.      selectCmd.CommandType = CommandType.Text;  
  12.      selectCmd.Connection = conn;  
  13.      selectCmd.Parameters.Add("?", OleDbType.Integer).Value = 5;  
  14.      adapter.SelectCommand = selectCmd;  
  15.   
  16.      //指定DataAdapter的Insert语句  
  17.      OleDbCommand insertCmd = new OleDbCommand();  
  18.      insertCmd.CommandText = "insert into s_userm(user_no,user_nm) values(?,?)";  
  19.      insertCmd.CommandType = CommandType.Text;  
  20.      insertCmd.Connection = conn;  
  21.      insertCmd.Parameters.Add("?", OleDbType.VarChar, 30, "user_no");  
  22.      insertCmd.Parameters.Add("?", OleDbType.VarChar, 80, "user_nm");  
  23.      adapter.InsertCommand = insertCmd;  
  24.   
  25.      //指定DataAdapter的Update语句  
  26.      OleDbCommand updateCmd = new OleDbCommand();  
  27.      updateCmd.CommandText = "update s_userm set email = ? where user_no = ?";  
  28.      updateCmd.CommandType = CommandType.Text;  
  29.      updateCmd.Connection = conn;  
  30.      updateCmd.Parameters.Add("?", OleDbType.VarChar, 50, "email");  
  31.      OleDbParameter parmUpdPk = updateCmd.Parameters.Add("?", OleDbType.VarChar, 30, "user_no");  
  32.      parmUpdPk.SourceVersion = DataRowVersion.Original;  
  33.      adapter.UpdateCommand = updateCmd;  
  34.   
  35.      //指定DataAdapter的Delete语句  
  36.      OleDbCommand deleteCmd = new OleDbCommand();  
  37.      deleteCmd.CommandText = "delete from s_userm where user_no = ?";  
  38.      deleteCmd.CommandType = CommandType.Text;  
  39.      deleteCmd.Connection = conn;  
  40.      OleDbParameter parmDelPk = deleteCmd.Parameters.Add("?", OleDbType.VarChar, 30, "user_no");  
  41.      parmDelPk.SourceVersion = DataRowVersion.Original;  
  42.      adapter.DeleteCommand = deleteCmd;  
  43.   
  44.      MessageBox.Show(adapter.SelectCommand.CommandText, "command");  
  45.   
  46.      //select  
  47.      adapter.Fill(ds, "s_userm");  
  48.      dataGridView1.DataSource = ds.Tables["s_userm"].DefaultView;  
  49.   
  50.      //insert  
  51.      DataRow updateRow = ds.Tables["s_userm"].NewRow();  
  52.      updateRow["user_no"] = "TEST2";  
  53.      updateRow["user_nm"] = "test2";  
  54.      ds.Tables["s_userm"].Rows.Add(updateRow);  
  55.      adapter.Update(ds, "s_userm");  
  56.   
  57.      MessageBox.Show(Convert.ToString(ds.Tables["s_userm"].Rows[3]["user_no"]), "user");  
  58.   
  59.      //update  
  60.      ds.Tables[0].Rows[3]["EMAIL"] = "gymsoft@163.com";  
  61.      adapter.Update(ds, "s_userm");  
  62.   
  63.      //delete  
  64.      ds.Tables["s_userm"].Rows[3].Delete();  
  65.      adapter.Update(ds, "s_userm");  
  66.  }  


 

5.使用DataGridView绑定数据源进行编辑,使用DataAdapter与DataSet进行增删改查,手动指定增删改查的语法。
 

[csharp] view plain copy
  1. public partial class Form1 : Form  
  2.  {  
  3.      String connString;  
  4.      OleDbConnection conn;  
  5.      DataSet ds;  
  6.      OleDbDataAdapter adapter;  
  7.   
  8.      public Form1()  
  9.      {  
  10.          InitializeComponent();  
  11.      }  
  12.   
  13.      private void buttonQuery_Click(object sender, EventArgs e)  
  14.      {  
  15.          connString = ConfigurationManager.ConnectionStrings["astt"].ConnectionString;  
  16.          conn = new OleDbConnection(connString);  
  17.   
  18.          ds = new DataSet();  
  19.          adapter = new OleDbDataAdapter();  
  20.   
  21.          //指定DataAdapter的select语句  
  22.          OleDbCommand selectCmd = new OleDbCommand();  
  23.          selectCmd.CommandText = "select * from s_userm where rownum <= ?";  
  24.          selectCmd.CommandType = CommandType.Text;  
  25.          selectCmd.Connection = conn;  
  26.          selectCmd.Parameters.Add("?", OleDbType.Integer).Value = 5;  
  27.          adapter.SelectCommand = selectCmd;  
  28.   
  29.          //指定DataAdapter的Insert语句  
  30.          OleDbCommand insertCmd = new OleDbCommand();  
  31.          insertCmd.CommandText = "insert into s_userm(user_no,user_nm) values(?,?)";  
  32.          insertCmd.CommandType = CommandType.Text;  
  33.          insertCmd.Connection = conn;  
  34.          insertCmd.Parameters.Add("?", OleDbType.VarChar, 30, "user_no");  
  35.          insertCmd.Parameters.Add("?", OleDbType.VarChar, 80, "user_nm");  
  36.          adapter.InsertCommand = insertCmd;  
  37.   
  38.          //指定DataAdapter的Update语句  
  39.          OleDbCommand updateCmd = new OleDbCommand();  
  40.          updateCmd.CommandText = "update s_userm set email = ? where user_no = ?";  
  41.          updateCmd.CommandType = CommandType.Text;  
  42.          updateCmd.Connection = conn;  
  43.          updateCmd.Parameters.Add("?", OleDbType.VarChar, 50, "email");  
  44.          OleDbParameter parmUpdPk = updateCmd.Parameters.Add("?", OleDbType.VarChar, 30, "user_no");  
  45.          parmUpdPk.SourceVersion = DataRowVersion.Original;  
  46.          adapter.UpdateCommand = updateCmd;  
  47.   
  48.          //指定DataAdapter的Delete语句  
  49.          OleDbCommand deleteCmd = new OleDbCommand();  
  50.          deleteCmd.CommandText = "delete from s_userm where user_no = ?";  
  51.          deleteCmd.CommandType = CommandType.Text;  
  52.          deleteCmd.Connection = conn;  
  53.          OleDbParameter parmDelPk = deleteCmd.Parameters.Add("?", OleDbType.VarChar, 30, "user_no");  
  54.          parmDelPk.SourceVersion = DataRowVersion.Original;  
  55.          adapter.DeleteCommand = deleteCmd;  
  56.   
  57.          //MessageBox.Show(adapter.SelectCommand.CommandText, "command");  
  58.   
  59.          //select  
  60.          adapter.Fill(ds, "s_userm");  
  61.          dataGridView1.DataSource = ds.Tables["s_userm"].DefaultView;  
  62.      }  
  63.   
  64.      private void buttonSave_Click(object sender, EventArgs e)  
  65.      {  
  66.          adapter.Update(ds, "s_userm");  
  67.   
  68.          ds.Clear();  
  69.          adapter.Fill(ds, "s_userm");  
  70.          dataGridView1.DataSource = ds.Tables["s_userm"].DefaultView;  
  71.      }  
  72.  }  


 

6.使用DataAdapter与DataSet,以事务的方式进行增删改查。
 

[csharp] view plain copy
  1. String connString = ConfigurationManager.ConnectionStrings["astt"].ConnectionString;  
  2.   
  3.  using (OleDbConnection conn = new OleDbConnection(connString))  
  4.  {  
  5.      DataSet ds = new DataSet();  
  6.      OleDbDataAdapter adapter = new OleDbDataAdapter();  
  7.   
  8.      //指定DataAdapter的select语句  
  9.      OleDbCommand selectCmd = new OleDbCommand();  
  10.      selectCmd.CommandText = "select * from s_userm where rownum <= ?";  
  11.      selectCmd.CommandType = CommandType.Text;  
  12.      selectCmd.Connection = conn;  
  13.      selectCmd.Parameters.Add("?", OleDbType.Integer).Value = 5;  
  14.      adapter.SelectCommand = selectCmd;  
  15.   
  16.      //指定DataAdapter的Insert语句  
  17.      OleDbCommand insertCmd = new OleDbCommand();  
  18.      insertCmd.CommandText = "insert into s_userm(user_no,user_nm) values(?,?)";  
  19.      insertCmd.CommandType = CommandType.Text;  
  20.      insertCmd.Connection = conn;  
  21.      insertCmd.Parameters.Add("?", OleDbType.VarChar, 30, "user_no");  
  22.      insertCmd.Parameters.Add("?", OleDbType.VarChar, 80, "user_nm");  
  23.      adapter.InsertCommand = insertCmd;  
  24.   
  25.      //指定DataAdapter的Update语句  
  26.      OleDbCommand updateCmd = new OleDbCommand();  
  27.      updateCmd.CommandText = "update s_userm set email = ? where user_no = ?";  
  28.      updateCmd.CommandType = CommandType.Text;  
  29.      updateCmd.Connection = conn;  
  30.      updateCmd.Parameters.Add("?", OleDbType.VarChar, 50, "email");  
  31.      OleDbParameter parmUpdPk = updateCmd.Parameters.Add("?", OleDbType.VarChar, 30, "user_no");  
  32.      parmUpdPk.SourceVersion = DataRowVersion.Original;  
  33.      adapter.UpdateCommand = updateCmd;  
  34.   
  35.      //指定DataAdapter的Delete语句  
  36.      OleDbCommand deleteCmd = new OleDbCommand();  
  37.      deleteCmd.CommandText = "delete from s_userm where user_no = ?";  
  38.      deleteCmd.CommandType = CommandType.Text;  
  39.      deleteCmd.Connection = conn;  
  40.      OleDbParameter parmDelPk = deleteCmd.Parameters.Add("?", OleDbType.VarChar, 30, "user_no");  
  41.      parmDelPk.SourceVersion = DataRowVersion.Original;  
  42.      adapter.DeleteCommand = deleteCmd;  
  43.   
  44.      //MessageBox.Show(adapter.SelectCommand.CommandText, "command");  
  45.   
  46.      conn.Open();  
  47.      using (OleDbTransaction tran = conn.BeginTransaction(IsolationLevel.ReadCommitted))  
  48.      {  
  49.          adapter.SelectCommand.Transaction = tran;  
  50.          adapter.InsertCommand.Transaction = tran;  
  51.          adapter.UpdateCommand.Transaction = tran;  
  52.          adapter.DeleteCommand.Transaction = tran;  
  53.   
  54.          try  
  55.          {  
  56.              //select  
  57.              adapter.Fill(ds, "s_userm");  
  58.              dataGridView1.DataSource = ds.Tables["s_userm"].DefaultView;  
  59.   
  60.              //insert  
  61.              DataRow updateRow = ds.Tables["s_userm"].NewRow();  
  62.              updateRow["user_no"] = "TEST2";  
  63.              updateRow["user_nm"] = "test2";  
  64.              ds.Tables["s_userm"].Rows.Add(updateRow);  
  65.              adapter.Update(ds, "s_userm");  
  66.   
  67.              //MessageBox.Show(Convert.ToString(ds.Tables["s_userm"].Rows[3]["user_no"]), "user");  
  68.   
  69.              //update  
  70.              ds.Tables[0].Rows[3]["EMAIL"] = "gymsoft@163.com";  
  71.              adapter.Update(ds, "s_userm");  
  72.   
  73.              //delete  
  74.              ds.Tables["s_userm"].Rows[3].Delete();  
  75.              adapter.Update(ds, "s_userm");  
  76.   
  77.              tran.Commit();  
  78.          }  
  79.          catch (Exception ex)  
  80.          {  
  81.              try  
  82.              {  
  83.                  tran.Rollback();  
  84.              }  
  85.              catch (Exception exc)  
  86.              {  
  87.                  MessageBox.Show(exc.Message, "error");  
  88.              }  
  89.              MessageBox.Show(ex.Message, "error");  
  90.          }  
  91.      }  
  92.      conn.Close();  
  93.  }