【问题标题】:Insert dataset records in database在数据库中插入数据集记录
【发布时间】:2010-11-18 12:30:57
【问题描述】:

我需要将数据集记录 (C#) 插入 MS Accessdatabase 表中。我需要批量插入记录。

如何在 C# 中做到这一点

【问题讨论】:

    标签: c# ms-access dataset


    【解决方案1】:

    对于此类任务,请考虑使用data adapter 抽象。对于 Microsoft Access 数据库,您可以使用 OleDbDataAdapter 实现,如下例所示:

    // Prerequisite: The data to be inserted is available in a DataTable/DataSet.
    var data = new DataTable();
    data.Columns.Add("CompanyName", typeof(string));
    data.Columns.Add("Phone", typeof(string));
    data.Rows.Add("Foo", "12345678");
    data.Rows.Add("Bar", "87654321");
    
    // Now, open a database connection using the Microsoft.Jet.OLEDB provider.
    // The "using" statement ensures that the connection is closed no matter what.
    using (var connection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data source=Northwind.mdb"))
    {
        connection.Open();
    
        // Create an OleDbDataAdapter and provide it with an INSERT command.
        var adapter = new OleDbDataAdapter();
        adapter.InsertCommand = new OleDbCommand("INSERT INTO Shippers (CompanyName, Phone) VALUES (@CompanyName , @Phone)", connection);
        adapter.InsertCommand.Parameters.Add("CompanyName", OleDbType.VarChar, 40, "CompanyName");
        adapter.InsertCommand.Parameters.Add("Phone", OleDbType.VarChar, 24, "Phone");
    
        // Hit the big red button!
        adapter.Update(data);
    }
    

    您也可以对其他品牌的数据库引擎执行相同的操作,方法是将OleDbCommandOleDbDataAdapterOleDbConnection 替换为适合您的数据库引擎的实现。对于 Microsoft SQL Server,查找前缀为 Sql 的类,例如。 SqlCommand.

    【讨论】:

      【解决方案2】:
         public void insert_dataset(DataSet ds,string ret_table, string table, string fileds, ArrayList arr_data)
          {
              ArrayList arr_rec=new ArrayList();
      
              string[] str_fields = fileds.Split(',');
      
              for (int i=0;i<ds.Tables[ret_table].Rows.Count;i++)
              {
                  for (int j = 0; j < str_fields.Length; j++)
                  {
                      arr_rec.Add(ds.Tables[ret_table].Rows[i].ItemArray[j]);
                  }
      
                  insert_table(table, fileds, arr_rec);
      
                  arr_rec.Clear();
              }
      
      
          }
          public void insert_table(string table,string fileds,ArrayList arr_data)
          {
              string str_command, str_params;
      
              string[] str_fields = fileds.Split(',');
      
              for (int i = 0; i < str_fields.Length; i++)
              {
                  str_fields[i] = "@" + str_fields[i].Trim();
              }
      
              str_params = string.Join(",", str_fields);
      
              str_command = "INSERT INTO " + table + "(" + fileds + ") values(" + str_params + ")";
      
              con = new OleDbConnection();
              //for sql
              //con=new SqlConnection();
      
              con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + frm_main.cur_directory + "\\db_temp1.mdb;Persist Security Info=True";
              //for sql
              //con.ConnectionString="server=(local);trusted_connection=yes;database=telephon;";
      
              cmd = con.CreateCommand();
              //for sql
              //cmd=new SqlCommand();
              cmd.Connection = con;
      
              con.Open();
      
              cmd.CommandText =str_command;
      
             // cmd.Parameters.AddWithValue("@ACagname", "2");
             for (int i = 0; i < arr_data.Count; i++)
              {
                  cmd.Parameters.AddWithValue(str_fields[i],arr_data[i]);
              }
      
              cmd.ExecuteNonQuery();
      
              con.Close();
      
          }
      

      【讨论】:

      • 在您的代码中添加一些信息会很有帮助。
      猜你喜欢
      • 2018-05-07
      • 1970-01-01
      • 1970-01-01
      • 2013-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-18
      相关资源
      最近更新 更多