别人用C#写的程序,将word文件转化为二进制流存到BLOB字段(所以到底存没存进去 没办法直接通过oracle客户端看) 我用java写程序读出来,怎么都只能读到 86个字节,所以再写入word的时候就是乱码。 以下是我的部分读数据库的代码:
rs.getBytes("WORD_STREAM") //rs是ResultSet的实例,我想是不是因为不能直接用getByte的原因?但是别人说可以用C#写代码读取就没有问题,一下是其部分代码 FileStream fs;
BinaryWriter bw;
int bufferSize = 100;
byte[] outbyte = new byte[bufferSize];
long retval;
long startIndex = 0;
string pub_id = "";
OracleDataReader myReader = oraCom.ReturnDataReader("select * from TABLE where ID="+ultraTextEditor_ID.Text.Trim());
while (myReader.Read())
{
pub_id = myReader.GetInt32(4).ToString(); fs = new FileStream("C:\\结果"+pub_id+".doc", FileMode.OpenOrCreate, FileAccess.Write);
bw = new BinaryWriter(fs);
startIndex = 0; retval = myReader.GetBytes(2, startIndex, outbyte, 0, bufferSize);
while (retval == bufferSize)
{
bw.Write(outbyte);
bw.Flush(); startIndex += bufferSize;
retval = myReader.GetBytes(2, startIndex, outbyte, 0, bufferSize);
}
bw.Write(outbyte, 0, (int)retval - 1);
bw.Flush();
bw.Close();
fs.Close();
}
myReader.Close(); 另外,我用java操作byte[]写如文件是没有问题的,这个我用另外写的小程序测试过(先把某文件转化为byte[],再将该byte[]写如另一文件,没有问题,所以我想问题可能是在读取数据库方面)。请接触过相关方面的人给说说解决方法和思路。~~谢谢啦~~~~
rs.getBytes("WORD_STREAM") //rs是ResultSet的实例,我想是不是因为不能直接用getByte的原因?但是别人说可以用C#写代码读取就没有问题,一下是其部分代码 FileStream fs;
BinaryWriter bw;
int bufferSize = 100;
byte[] outbyte = new byte[bufferSize];
long retval;
long startIndex = 0;
string pub_id = "";
OracleDataReader myReader = oraCom.ReturnDataReader("select * from TABLE where ID="+ultraTextEditor_ID.Text.Trim());
while (myReader.Read())
{
pub_id = myReader.GetInt32(4).ToString(); fs = new FileStream("C:\\结果"+pub_id+".doc", FileMode.OpenOrCreate, FileAccess.Write);
bw = new BinaryWriter(fs);
startIndex = 0; retval = myReader.GetBytes(2, startIndex, outbyte, 0, bufferSize);
while (retval == bufferSize)
{
bw.Write(outbyte);
bw.Flush(); startIndex += bufferSize;
retval = myReader.GetBytes(2, startIndex, outbyte, 0, bufferSize);
}
bw.Write(outbyte, 0, (int)retval - 1);
bw.Flush();
bw.Close();
fs.Close();
}
myReader.Close(); 另外,我用java操作byte[]写如文件是没有问题的,这个我用另外写的小程序测试过(先把某文件转化为byte[],再将该byte[]写如另一文件,没有问题,所以我想问题可能是在读取数据库方面)。请接触过相关方面的人给说说解决方法和思路。~~谢谢啦~~~~
Blob wordStream = rs.getBlob(i);//int i
将返回类型改为Blob在做相应处理就好了:)