C# db2blob上传文件

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

我正在尝试使用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 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)

文件的最后一个字节丢失,文件未满,我不知道这行代码需要什么…

您的方法做得太多了。首先将其分离成更小的方法(切换到局部变量),试图将其减少到最小的可复制部分。读者没有返回任何信息吗?你能给这个文件写点什么吗?没有。我想问题是写进数据库。。。我做错什么了?我不知道。。。像我说的那样把事情分开,调查到底是什么命令