被指定的转换无效困扰!!
using (OracleConnection conn = DB.createConnection())
{
OracleCommand comm = conn.CreateCommand();
comm.Connection.Open();
try
{
string filename = Request.QueryString["filename"];
string tablename = Request.QueryString["tablename"];
comm.CommandText = "select * from " + tablename + " where filename='" + filename + "'";
OracleDataReader objReader = comm.ExecuteReader();
//string strcmd = "select * from " + tablename + " where filename='" + filename + "'";
//System.Data.OracleClient.OracleCommand objCommand = new System.Data.OracleClient.OracleCommand(strcmd, conn);
//conn.Open();
//objReader = objCommand.ExecuteReader();
if (objReader.Read())
{
Response.AddHeader("Content-Disposition", "attachment; filename=" + objReader["filename"].ToString());
Response.AppendHeader("Contenttype", "application/msword");
//读取数据
byte[] buffer = new Byte[10240];
//long datalen = objReader.GetBytes(3, 0, null, 0, 0);//["filedata"]
long datalen;
datalen = objReader.GetBytes(3, 0, null, 0, 0);//["filedata"] 这里出错,指定的转换无效
//Response.Write("datalen=" + datalen.ToString());
//*
long curPos = 0;
long readsize = 0;
readsize = objReader.GetBytes(3, curPos, buffer, 0, 10240);
while (readsize == 10240)
{
curPos += readsize;
Response.BinaryWrite(buffer);
Response.Flush();
readsize = objReader.GetBytes(3, curPos, buffer, 0, 10240);
}
byte[] rBuf = new Byte[readsize];
objReader.GetBytes(3, curPos, rBuf, 0, (int)readsize);
Response.BinaryWrite(rBuf);
Response.Flush();
//*/
}
}
finally
{
//if (objReader != null) objReader.Close();
conn.Close();
}
}