1000分求高手帮忙!!!!关于vc#操作oracle数据库bolb字段问题,谢谢
我要做一个c/s程序客户端自动升级程序,原理很简单将将需要更新的程序(如: exe、dll)写入blob字段中,客户端读取其中的内容写入本机。可是现在遇到一个问题,从数据库取下来的程序总是少一个字节,希望各位大哥能帮助我,问题解决1000分送上!!
以下是我的程序
try
{
string constr = "User Id=a;Password=a;Data Source=orcl";
OracleConnection con = new OracleConnection(constr);
con.Open();
String sourceLoc = this.textBox1.Text;
string[] fileNameArr=sourceLoc.Split('\\');
string fileName=fileNameArr[fileNameArr.Length-1];
FileStream fs = new FileStream(sourceLoc, FileMode.Open,FileAccess.Read);
byte[] ImageData = new byte[fs.Length];
fs.Read(ImageData,0,System.Convert.ToInt32(fs.Length));
fs.Close();
String block = " BEGIN " +
" INSERT INTO UPDATE_VERSION (ID,UPDATE_FILE,FILE_NAME) VALUES (4, :1,'"+fileName+"'); " +
" END; ";
OracleCommand cmd = new OracleCommand();
cmd.CommandText = block;
cmd.Connection = con;
cmd.CommandType = CommandType.Text;
OracleParameter param = cmd.Parameters.Add("blobtodb", OracleDbType.Blob);
param.Direction = ParameterDirection.Input;
param.Value = ImageData;
cmd.ExecuteNonQuery();
}
catch(Oracle.DataAccess.Client.OracleException ee)
{
MessageBox.Show(ee.ToString());
}
以下是我的下载程序
try
{
string constr = "User Id=codelife;Password=810106;Data Source=orcl";
OracleConnection conn = new OracleConnection(constr);
conn.Open();
String DestinationLoc = Application.StartupPath + "\\" + name;
String block = " BEGIN " +
" SELECT UPDATE_FILE into :1 from UPDATE_VERSION WHERE id = " + id + "; " +
" END; ";
OracleCommand cmd = new OracleCommand();
cmd.CommandText = block;
cmd.Connection = conn;
cmd.CommandType = CommandType.Text;
OracleParameter param2 = cmd.Parameters.Add("blobfromdb", OracleDbType.Blob);
param2.Direction = ParameterDirection.Output;
cmd.ExecuteNonQuery();
byte[] byteData = new byte[0];
byteData = (byte[])((OracleBlob)(cmd.Parameters[0].Value)).Value;
int ArraySize = new int();
ArraySize = byteData.GetUpperBound(0);
FileStream fs1 = new FileStream(@DestinationLoc, FileMode.OpenOrCreate, FileAccess.Write);
fs1.Write(byteData, 0,ArraySize);
fs1.Close();
}
catch(Oracle.DataAccess.Client.OracleException e)
{
}
我的测试数据库在windows和linux下都不行windows的oracle版本是9i,linux下是8.1.7
问题点数:100、回复次数:5Top
1 楼LoveCherry(论成败,人生豪迈;大不了,重头再来!^_^)回复于 2005-02-04 11:44:39 得分 50
mark再看Top
2 楼jialiang(≈≈逆水行舟≈≈)回复于 2005-02-04 12:33:10 得分 50
upTop
3 楼zwh23(zwh23)回复于 2005-02-04 12:50:15 得分 0
好了,问题自己解决,揭贴Top
4 楼zwh23(zwh23)回复于 2005-02-04 12:50:58 得分 0
谢谢各位给我的灵感,不过鉴于自己解决的问题,只能送上100分给各位了Top
5 楼wsxcy66668888()回复于 2005-03-03 16:13:12 得分 0
怎么解决的,可以说一下吗?谢谢你Top




