0

我正在编写 ac# 控制台应用程序来读取来自一个数据库的一些数据对其进行一些更改并将其复制到另一个数据库中,除了图像之外,所有数据都按预期复制。

我的代码是这样的;

private static DataTable ExecuteQueryAndGetDataTableForMultiSiteDB(string query, SqlConnection ConnectionToMultiSiteDB, SqlTransaction Transaction)
{
    try
    {
        SqlCommand Command = new SqlCommand(query, ConnectionToMultiSiteDB,Transaction);
        DataTable Result = new DataTable();
        SqlDataReader Reader = Command.ExecuteReader();
        Result.Load(Reader);
        return Result;
    }
    catch (Exception ex)
    {
        Console.WriteLine("An error occured while executing the query \n " + query);
        Console.WriteLine(ex.Message);
        throw ex;
    }
}

一切正常,但图像没有被完全复制,只有像这样的图像数据的一部分被复制= 0x53797374656D2E427974655B5D

由于实际图像长如一百万个字符,我想这是因为我使用的每个数据表的列都有一定的限制,有人可以帮助我克服这种情况吗?

4

1 回答 1

0

对于从 Blob 或 VarBinary 字段读取大量数据的系统,最好使用 DataReader,而不是 DataAdapter(如 Jason 前面所述)

此外,根据源数据库,您还应该指定列。

使用“*”是惰性的,并且在从 Jet 数据库(即:MS Access 等)读取时也会导致问题,其中 Blob 和 Memo 字段被截断,除非它们被选为 LAST 列。

遍历图像数据的每一行会好得多,尤其是当图像大小超过几 KB 时。

如果您使用表结构(和数据库类型)更新问题,我将修改此答案并为您提供更多信息。

于 2013-05-31T14:07:58.463 回答