将datagridview的内容保存到数据库的问题

时间:2010-11-24 12:51:18

标签: c#

我正在开发一个简单的数据库相关应用程序。 GUI由数据网格视图和" save"组成。按钮。 datagridview使用数据集作为其源。然后通过从SQL Server Compact Edition数据库文件中提取数据来填充数据集。

问题是当我使用datagridview更改数据库的内容然后继续更改它。

SqlCeDataAdapter da = new SqlCeDataAdapter();
da.UpdateCommand = Con.CreateCommand(); // Con is SqlCeCommand object
da.UpdateCommand.CommandText = "update TempTable set " +
"S.No = @S.No , Name = @Name";

this.AddParams(da.UpdateCommand, "S.No", "Name");
da.Update(ds); // ds is the dataset used as source by the datagridview

和AddParams方法...

private void AddParams(SqlCeCommand cmd, params string[] cols)
        {
            foreach (string col in cols)
            {
                cmd.Parameters.Add("@" + col, SqlDbType.Char, 0, col);
            }
        }

问题是我得到的ArguementException描述为" char"在以下一行

cmd.Parameters.Add("@" + col, SqlDbType.Char, 0, col);

我认为是因为其中一个参数是varchar而另一个是整数。那么我怎么做到这一点?

P.S。我是Dot Net& amp;的初学者。编程。

2 个答案:

答案 0 :(得分:0)

如果它只是导致问题的类型,您可以为每个列定义一个单独的类型,如下所示:

Dictionary<string, SqlDbType> columnDefinition = new Dictionary<string, SqlDbType>( )
{
    { "S.No", SqlDbType.YourType },
    { "Name", SqlDbType.OtherType }
};

private void AddParams( SqlCeCommand cmd, params string[] cols )
{
    foreach( string col in cols )
    {
       cmd.Parameters.Add( "@" + col, columnDefinition[ col ], 0, col );
    }
}

答案 1 :(得分:0)

您好我认为您没有提供db值大小,因为您向它提供了0。

提供大小或只是@paraname,值

了解更多信息 拒绝 http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlparametercollection.aspx