gpt4 book ai didi

c# - 有什么方法可以将 SqlTypes 与 SqlDataAdapter 一起使用吗?

转载 作者:太空宇宙 更新时间:2023-11-03 11:44:57 25 4
gpt4 key购买 nike

我正在尝试编写一些简单的 C# 代码,这些代码将从 SQL Server 实例中选择一些数据,修改数据,并将更改更新回数据库。但我很难弄清楚如何做到这一点。这是我的代码的简化版本:

using (SqlConnection conn = new SqlConnection("Server=(local);Integrated Security=true;Database=master"))
{
SqlDataAdapter da = new SqlDataAdapter("SELECT ID, Field FROM test", conn);
SqlCommandBuilder cb = new SqlCommandBuilder(da);
DataSet ds = new DataSet();
da.Fill(ds, "test");

foreach (DataRow dr in ds.Tables["test"].Rows)
{
dr["Field"] = someFunction((SqlString)dr["Field"]);
}

da.Update(ds, "test");
}

但是这段代码给我以下错误:

System.InvalidCastException: specified cast is not valid.

So I change the code to use string rather than SqlString:

dr["Field"] = someFunction((string)dr["Field"]);

但是如果我的数据中有任何空值,我会得到这个错误:

System.InvalidCastException: Unable to cast object of type 'System.DBNull' to type 'System.String'.

我认为 SqlTypes 命名空间的全部意义在于提供可以处理数据库空值的类型。如果是这样,为什么我不能将它们与 SqlDataAdapter 一起使用?希望我遗漏了一些明显的东西。

最佳答案

我在这里可能是非常错误的(只是免责声明),但我认为您需要从您的数据库值创建一个新的 SqlString,如下所示:我认为这适用于您的 null 案例,不过我还没有测试过。

    SqlString str = (dr["Field"] == null) ? SqlString.Null : new SqlString((string)dr["Field"]);
someFunction(str);

关于c# - 有什么方法可以将 SqlTypes 与 SqlDataAdapter 一起使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3686397/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com