我有一个页面,上传附件时就报错,不上传附件时一切正常,
我原来用的是oracle 92,一点问题都没有,后来发现用户装的是oracle8.1.7,
我换到8.1.7后就出现下列问题,
上传附件报错 ORA-12571: TNS:packet writer failure
刷新页面 出现 ORA-03114: not connected to ORACLE
再刷新又一切正常,连上数据库。 String SqlCmd = "INSERT INTO ImageStore (ImageData, ImageContentType, ImageSize,ImageName,lx) VALUES (?, ?, ?,?,'" + lx.ToString() + "')";
OleDbCommand CmdObj = new OleDbCommand(SqlCmd, zy.Data.Sql.Connection);//zy.Data.Sql.Connection 数据连接 封装的类
CmdObj.Parameters.Add(":ImageData", OleDbType.Binary, FileLength).Value = FileByteArray;
CmdObj.Parameters.Add(":ImageContentType", OleDbType.VarChar, 100).Value = UpFile.ContentType;
//记录文件长度,读取时使用
CmdObj.Parameters.Add(":ImageSize", OleDbType.VarChar, 255).Value = UpFile.ContentLength;
string c = UpFile.FileName;
string name = Path.GetFileName(c);
CmdObj.Parameters.Add(":ImageName", OleDbType.VarChar, 255).Value = name;
CmdObj.ExecuteNonQuery();
代码92下测试没有问题
我原来用的是oracle 92,一点问题都没有,后来发现用户装的是oracle8.1.7,
我换到8.1.7后就出现下列问题,
上传附件报错 ORA-12571: TNS:packet writer failure
刷新页面 出现 ORA-03114: not connected to ORACLE
再刷新又一切正常,连上数据库。 String SqlCmd = "INSERT INTO ImageStore (ImageData, ImageContentType, ImageSize,ImageName,lx) VALUES (?, ?, ?,?,'" + lx.ToString() + "')";
OleDbCommand CmdObj = new OleDbCommand(SqlCmd, zy.Data.Sql.Connection);//zy.Data.Sql.Connection 数据连接 封装的类
CmdObj.Parameters.Add(":ImageData", OleDbType.Binary, FileLength).Value = FileByteArray;
CmdObj.Parameters.Add(":ImageContentType", OleDbType.VarChar, 100).Value = UpFile.ContentType;
//记录文件长度,读取时使用
CmdObj.Parameters.Add(":ImageSize", OleDbType.VarChar, 255).Value = UpFile.ContentLength;
string c = UpFile.FileName;
string name = Path.GetFileName(c);
CmdObj.Parameters.Add(":ImageName", OleDbType.VarChar, 255).Value = name;
CmdObj.ExecuteNonQuery();
代码92下测试没有问题
INSERT INTO ImageStore (ImageData, ImageContentType, ImageSize,ImageName,lx) VALUES (?, ?, ?,?,'" + lx.ToString() + "')";
OleDbCommand CmdObj = new OleDbCommand(SqlCmd, zy.Data.Sql.Connection);//
语句放到oracle8.1.7中的SqlPlus中执行一下。
能否插入?
出现新问题,我把OleDb换成OracleOracleConnection Con = new OracleConnection("Data Source=gdxt;User Id=gdxt;Password=gdxt;");
String SqlCmd = "INSERT INTO ImageStore (ImageData, ImageContentType, ImageSize,ImageName,lx) VALUES (?, ?, ?,?,'" + lx.ToString() + "')";
OracleCommand CmdObj = new OracleCommand(SqlCmd,Con);
CmdObj.Parameters.Add("ImageData", OracleType.Blob, FileLength).Value = FileByteArray;
CmdObj.Parameters.Add("ImageContentType", OracleType.VarChar, 100).Value = UpFile.ContentType;
//记录文件长度,读取时使用
CmdObj.Parameters.Add("ImageSize", OracleType.VarChar, 255).Value = UpFile.ContentLength;
string c = UpFile.FileName;
string name = Path.GetFileName(c);
CmdObj.Parameters.Add("ImageName", OracleType.VarChar, 255).Value = name;
Con.Open();
CmdObj.ExecuteNonQuery();出现 ORA-01036: 非法的变量名/编号\n 错误
String SqlCmd = "INSERT INTO ImageStore (ImageData, ImageContentType, ImageSize,ImageName,lx) VALUES (:ImageData,:ImageContentType,:ImageSize,:ImageName,'" + lx.ToString() + "')";
OracleCommand CmdObj = new OracleCommand(SqlCmd,Con);
CmdObj.Parameters.Add(":ImageData", OracleType.Blob, FileLength).Value = FileByteArray;
CmdObj.Parameters.Add(":ImageContentType", OracleType.VarChar, 100).Value = UpFile.ContentType;
//记录文件长度,读取时使用
CmdObj.Parameters.Add(":ImageSize", OracleType.VarChar, 255).Value = UpFile.ContentLength;
string c = UpFile.FileName;
string name = Path.GetFileName(c);
CmdObj.Parameters.Add(":ImageName", OracleType.VarChar, 255).Value = name;
Con.Open();
CmdObj.ExecuteNonQuery();
换成这个就好了,但是OracleConnection 连接数据库时不能指定数据提供者的驱动,唉,遗憾啊,所以其他的数据连接还是用OleDbConnection