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


    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.  }  
  • 相关阅读:
    微信助力活动表结构设计
    mysql的in查询分析
    PHP从数组中找到指定元素的位置
    Java程序使用Alpine Linux报错java.lang.NoClassDefFoundError: Could not initialize class org.xerial.snappy.Snappy解决
    Eclipse/Idea 代码格式化部分忽略
    修改Linux桌面高分屏下QT程序界面的缩放
    折腾linux随笔 之 关闭Budgie默认自动隐藏应用的菜单栏 与 Gnome系桌面应用菜单无内容解决
    Debian Buster 使用Lxde在界面中打开url提示错误解决
    Portainer容器可视化管理工具使用文档
    Lxde添加触摸板双击功能、防误触
  • 原文地址:https://www.cnblogs.com/zhaoshujie/p/9594685.html
Copyright © 2020-2023  润新知