[英]C# MySQL Blob field - Cannot copy zip file stored in blob to another table
我有一個由第三方應用程序存儲在表格中的zip文件,我無法控制。 但我可以訪問MySQL DB。
我想做的是做一個SELECT語句來檢索blob字段並將此記錄復制到另一個表中。 但另一方面,我確實看到了遠端的blob字段,但它不是一個zip文件,它是一個文本文件,說System.Byte [],就是這樣 - 任何人都有任何想法導致這個以及如何修理它?
繼承人我的下面 - 再次任何幫助非常感謝:)
OdbcCommand broadcastSelect = new OdbcCommand("select * from exchange where status='1' and type='UPDATE'", cloud);
OdbcDataReader DbReader = Select.ExecuteReader();
int fCount = DbReader.FieldCount;
String type = "";
String filename = "";
byte[] data = null;
int status = 0;
while (DbReader.Read())
{
if (DbReader.IsDBNull(0))
{
type = "BLANK";
}
else
{
type = (string)DbReader[0];
}
if (DbReader.IsDBNull(1))
{
filename = "BLANK";
}
else
{
filename = (string)DbReader[1];
}
if (DbReader.IsDBNull(2))
{
data = new byte[1];
}
else
{
data = (byte[])DbReader[2];
}
if (DbReader.IsDBNull(3))
{
status = 0;
}
else
{
status = (int)DbReader[3];
}
OdbcCommand Copy = new OdbcCommand("INSERT INTO exchange(type,filename,data,status) VALUES('" + type + "','" + filename + "','"
+ data + "','" + status + "')", local);
Copy.ExecuteNonQuery();
}
使用sql參數插入二進制數據。
OdbcParameter param = new OdbcParameter("@file", SqlDbType.Binary);
---更新我希望下面給出的代碼對你有所幫助。
OdbcCommand broadcastSelect = new OdbcCommand("select * from exchange where status='1' and type='UPDATE'", cloud);
OdbcDataReader DbReader = Select.ExecuteReader();
int fCount = DbReader.FieldCount;
String type = "";
String filename = "";
byte[] data = null;
int status = 0;
OdbcParameter param = null;
while (DbReader.Read())
{
if (DbReader.IsDBNull(0))
{
type = "BLANK";
}
else
{
type = (string)DbReader[0];
}
if (DbReader.IsDBNull(1))
{
filename = "BLANK";
}
else
{
filename = (string)DbReader[1];
}
if (DbReader.IsDBNull(2))
{
param = new OdbcParameter("@file", SqlDbType.Binary);
param.DbType = DbType.Binary;
param.Value = new byte[1];
command.Parameters.Add(param);
}
else
{
param = new OdbcParameter("@file", SqlDbType.Binary);
param.DbType = DbType.Binary;
param.Value = (byte[])dbReader[2];
param.Size = ((byte[])dbReader[2]).Length;
command.Parameters.Add(param);
}
if (DbReader.IsDBNull(3))
{
status = 0;
}
else
{
status = (int)DbReader[3];
}
OdbcCommand Copy = new OdbcCommand("INSERT INTO exchange(type,filename,data,status) VALUES('" + type + "','" + filename + "',@file,'" + status + "')", local);
Copy.ExecuteNonQuery();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.