在datagrid和SQL Compact表之间同步数据

时间:2012-04-28 01:47:38

标签: c# sql data-binding datagridview

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

我的网格绑定到tableNameBindingSource。我无法以编程方式将行添加到网格中,因为它已绑定。我正在寻找一种最简单的方法,一次将数百行添加到我的SQL表中,并希望尝试使用datagridview来实现这一目标。

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

2 个答案:

答案 0 :(得分: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是否适用于紧凑版。有一个CodePlex项目虽然叫做SQLCEBulkCopy。

答案 1 :(得分:0)

你可以使用一个循环,然后使用Insert查询,如果这有帮助......

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()
}

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