C# db2blob上传文件
我正在尝试使用blob colomun将文件上载到表中。它可以工作,但不正确,可以帮助吗? 此代码已上载,但不正确。当我打开表时,我看到这个| ID=1 |文件| uz=COM.ibm.db2.jdbc.app。DB2Blob@54c6c724|C# db2blob上传文件,c#,db2,oledb,C#,Db2,Oledb,我正在尝试使用blob colomun将文件上载到表中。它可以工作,但不正确,可以帮助吗? 此代码已上载,但不正确。当我打开表时,我看到这个| ID=1 |文件| uz=COM.ibm.db2.jdbc.app。DB2Blob@54c6c724| FileStream stream = new FileStream(textBox4.Text, FileMode.Open, FileAccess.Read); BinaryReader reader = new Binar
FileStream stream = new FileStream(textBox4.Text, FileMode.Open, FileAccess.Read);
BinaryReader reader = new BinaryReader(stream);
byte[] file = reader.ReadBytes((int)stream.Length);
reader.Close();
stream.Close();
string query = "UPDATE UPDATE_Z SET FILE_Z=? WHERE ID='"+1+"';";
{
OleDbConnection connection = new OleDbConnection(conn);
connection.Open();
OleDbCommand command = connection.CreateCommand();
// command.CreateParameter();
command.CommandText = query;
command.Parameters.Add("FILE_Z", OleDbType.Binary, file.Length);
command.Parameters[0].Value = file;
command.ExecuteNonQuery();
connection.Close();
// for (int i=0; i < file.Length;i++ )
//{
// MessageBox.Show(file[i].ToString());
//}
}
query = "SELECT FILE_Z FROM UPDATE_Z where ID ='"+1+"'";
FileStream stream1;
BinaryWriter writer;
int bufferSize = 100;
byte[] outByte = new byte[bufferSize];
long retval;
long startIndex = 0;
string pubID = "";
OleDbConnection connection1 = new OleDbConnection(conn);
connection1.Open();
OleDbCommand command1 = connection1.CreateCommand();
command1.CommandText = query;
OleDbDataReader reader1 = command1.ExecuteReader(System.Data.CommandBehavior.Default);
while (reader1.Read())
{
// pubID = reader1.GetString(0);
stream1 = new FileStream("version1.txt", FileMode.OpenOrCreate, FileAccess.Write);
writer = new BinaryWriter(stream1);
startIndex = 0;
retval = reader1.GetBytes(0, startIndex, outByte, 0, bufferSize);
while (retval == bufferSize)
{
writer.Write(outByte);
writer.Flush();
startIndex += bufferSize;
retval = reader1.GetBytes(0, startIndex, outByte, 0, bufferSize);
}
writer.Write(outByte, 0, (int)retval - 1);
writer.Flush();
writer.Close();
stream1.Close();
}
reader1.Close();
connection1.Close();
FileStream-stream=newfilestream(textBox4.Text,FileMode.Open,FileAccess.Read);
BinaryReader=新的BinaryReader(流);
byte[]file=reader.ReadBytes((int)stream.Length);
reader.Close();
stream.Close();
string query=“UPDATE UPDATE_Z SET FILE_Z=?其中ID=”+1+“;”;
{
OLEDB连接=新的OLEDB连接(连接);
connection.Open();
OleDbCommand=connection.CreateCommand();
//command.CreateParameter();
command.CommandText=查询;
Add(“FILE_Z”,OleDbType.Binary,FILE.Length);
command.Parameters[0]。值=文件;
command.ExecuteNonQuery();
connection.Close();
//for(int i=0;i
输出文件“ZAP.EXE”的大小为0 kb,但字节数组文件不是空的……此代码适用于我:
FileStream stream = new FileStream(textBox4.Text, FileMode.Open, FileAccess.Read);
BinaryReader reader = new BinaryReader(stream);
byte[] file = reader.ReadBytes((int)stream.Length);
reader.Close();
stream.Close();
string query = "UPDATE UPDATE_Z SET FILE_Z=? WHERE ID='"+1+"';";
{
OleDbConnection connection = new OleDbConnection(conn);
connection.Open();
OleDbCommand command = connection.CreateCommand();
// command.CreateParameter();
command.CommandText = query;
command.Parameters.Add("FILE_Z", OleDbType.Binary, file.Length);
command.Parameters[0].Value = file;
command.ExecuteNonQuery();
connection.Close();
// for (int i=0; i < file.Length;i++ )
//{
// MessageBox.Show(file[i].ToString());
//}
}
query = "SELECT FILE_Z FROM UPDATE_Z where ID ='"+1+"'";
FileStream stream1;
BinaryWriter writer;
int bufferSize = 100;
byte[] outByte = new byte[bufferSize];
long retval;
long startIndex = 0;
string pubID = "";
OleDbConnection connection1 = new OleDbConnection(conn);
connection1.Open();
OleDbCommand command1 = connection1.CreateCommand();
command1.CommandText = query;
OleDbDataReader reader1 = command1.ExecuteReader(System.Data.CommandBehavior.Default);
while (reader1.Read())
{
// pubID = reader1.GetString(0);
stream1 = new FileStream("version1.txt", FileMode.OpenOrCreate, FileAccess.Write);
writer = new BinaryWriter(stream1);
startIndex = 0;
retval = reader1.GetBytes(0, startIndex, outByte, 0, bufferSize);
while (retval == bufferSize)
{
writer.Write(outByte);
writer.Flush();
startIndex += bufferSize;
retval = reader1.GetBytes(0, startIndex, outByte, 0, bufferSize);
}
writer.Write(outByte, 0, (int)retval);
writer.Flush();
writer.Close();
stream1.Close();
}
reader1.Close();
connection1.Close();
FileStream-stream=newfilestream(textBox4.Text,FileMode.Open,FileAccess.Read);
BinaryReader=新的BinaryReader(流);
byte[]file=reader.ReadBytes((int)stream.Length);
reader.Close();
stream.Close();
string query=“UPDATE UPDATE_Z SET FILE_Z=?其中ID=”+1+“;”;
{
OLEDB连接=新的OLEDB连接(连接);
connection.Open();
OleDbCommand=connection.CreateCommand();
//command.CreateParameter();
command.CommandText=查询;
Add(“FILE_Z”,OleDbType.Binary,FILE.Length);
command.Parameters[0]。值=文件;
command.ExecuteNonQuery();
connection.Close();
//for(int i=0;i
问题是这个代码writer.Write(outByte,0,(int)retval-1)代码>
文件的最后一个字节丢失,文件未满,我不知道这行代码需要什么…您的方法做得太多了。首先将其分离成更小的方法(切换到局部变量),试图将其减少到最小的可复制部分。读者没有返回任何信息吗?你能给这个文件写点什么吗?没有。我想问题是写进数据库。。。我做错什么了?我不知道。。。像我说的那样把事情分开,调查到底是什么命令