0

您好,我有一个链接到 SQL Compact 数据库(xxx.sdf 文件)的项目,需要从我datagridview的表和其中的表中正确传输数据。这可能不是我应该做的,但我花了几个小时试图参数化一大堆查询来单独对表执行此操作(没有成功)。我一直在阅读一篇又一篇文章,也许我正在寻找错误的东西。

我的网格绑定到tableNameBindingSource. 我无法以编程方式将行添加到网格中,因为它已绑定。我正在寻找一次向我的 SQL 表中添加数百行的最简单方法,并想尝试使用datagridview来完成此操作。

我可以(取消绑定 SQL 表并)根据需要将行添加到datagridview表中,然后强制其内容成为数据库表的内容吗?是否有某种翻译器(我使用 SQLDataAdaptor 从 SQL 表转到datagridview)?

4

2 回答 2

2

只要您的网格视图表(源数据)与您的 SQL 表具有相同的结构(列、数据类型),您就应该能够使用 SQLBulkCopy 快速复制数据。

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlbulkcopy.aspx

我用它在相对较短的时间内复制了 100,000 行。

查看此 CodeProject 和上面的链接:

http://www.codeproject.com/Articles/18418/Transferring-Data-Using-SqlBulkCopy

(编辑)我刚刚注意到你说 SQLCompact。我不确定 SqlBulkCopy 是否适用于精简版。有一个名为 SQLCEBulkCopy 的 CodePlex 项目。

于 2012-04-28T02:18:33.677 回答
0

如果有帮助,您可以只使用循环,然后使用插入查询...

SqlConnection cn = new SqlConnection(your connection parameters)
foreach (GridViewRow gvr in GridView1.Rows)
{
        Label lblname = (Label)gvr.FindControl("lblname");
        Label lbllogin = (Label)gvr.FindControl("lbllogin");
        Label lblemail = (Label)gvr.FindControl("lblemail");
        cn.open();

                SqlCommand command = new SqlCommand("INSERT INTO Employee(Name,Login_Id,Email_Id) VALUES(@lblname,@lbllogin,@lblemail)", cn);
                command.Parameters.AddWithValue("@lblname", lblname.Text.ToString());
                command.Parameters.AddWithValue("@lbllogin", lbllogin.Text.ToString());
                command.Parameters.AddWithValue("@lblemail", lblemail.Text.ToString());
                command.ExecuteNonQuery();

                cn.Close()
}

并将此代码放入按钮单击事件中(保存按钮或其他内容)

于 2013-08-21T08:53:53.710 回答