首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在数据库中插入数据集记录

在数据库中插入数据集记录
EN

Stack Overflow用户
提问于 2009-08-11 05:59:30
回答 2查看 27.9K关注 0票数 6

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

如何在C#中执行此操作

EN

回答 2

Stack Overflow用户

发布于 2010-05-13 16:07:06

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

代码语言:javascript
运行
复制
// 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

票数 5
EN

Stack Overflow用户

发布于 2012-05-02 23:36:30

代码语言:javascript
运行
复制
   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();

    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1258637

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档