我正在编写一个c#控制台应用程序来读取一些数据库中的一些数据对它进行一些更改并将其复制到另一个数据库所有数据都按预期复制,除了图像。
我的代码是这样的;
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
当实际图像长度像一百万个字符时,我想这种情况正在发生,因为我使用的每个数据表的列都有一定的限制可以帮助我克服这种情况吗?
答案 0 :(得分:0)
对于从Blob或VarBinary字段读取大量数据的系统,最好使用DataReader,而不是DataAdapter(如Jason先前所述)
此外,根据源数据库,您还应指定列。
使用“*”是懒惰的,并且在从Jet数据库(即:MS Access等)读取时也会导致问题,其中Blob和Memo字段被截断,除非它们被选为最后一列。
迭代图像数据的每一行会更好,特别是如果图像的大小超过几KB。
如果您使用表格结构(和数据库类型)更新问题,我将为您提供更多信息以修改此答案。