高分在线等ORA-00936 ASP.NET写入ORACLE问题

xiong1000 2006-07-06 03:02:57
请问下,我准备用asp.net 存入oracle表中一些图片内容.
oracle 表PERFCHAR的定义是
CASE_ID NUMBER 12
PROJECT_ID NUMBER 12
CHART_TYPE VARCHAR2 16
CHART_CONTENT BLOB
CREATETIME DATE
UPDATETIME DATE
OWNER_ID NUMBER

我采用了OLEDB代码如下
using System.Data.OleDb;
using System.IO;

public partial class writeimage : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{


}
protected void Submit1_ServerClick(object sender, EventArgs e)
{
int intPID= int.Parse(tbpid.Text.ToString());
int intCID = int.Parse(tbcid.Text.ToString());
string strType = tbtype.Text.ToString();
int intFilelength = myfile.PostedFile.ContentLength;
Byte [ ] bytimage = new Byte[intFilelength];
Stream imagestream = myfile.PostedFile.InputStream;
imagestream.Read(bytimage,0,intFilelength);




string strconn = "Provider='OraOLEDB.Oracle.1';User ID=test;password=pass;Data Source='WEBDB'";
OleDbConnection myConnection = new OleDbConnection(strconn);

// String strCmd = "INSERT INTO PERFCHAR(CASE_ID,PROJECT_ID,CHART_TYPE,CHART_CONTENT) VALUES(@CID,@PID,@CTYPE,@IMAGE)";
String strCmd = "INSERT INTO PERFCHAR(CASE_ID,PROJECT_ID,CHART_TYPE,CHART_CONTENT,CREATETIME,UPDATETIME,WONER_ID) VALUES(@CID,@PID,@CTYPE,@IMAGE,sysdate,sysdate,2)";
OleDbCommand dbcomm = new OleDbCommand(strCmd, myConnection);
dbcomm.Parameters.Add("@IMAGE", OleDbType.Binary, intFilelength).Value = bytimage;
dbcomm.Parameters.Add("@CID", OleDbType.Numeric, 12).Value = intCID;
dbcomm.Parameters.Add("@PID", OleDbType.Numeric, 12).Value = intPID;
dbcomm.Parameters.Add("@CTYPE", OleDbType.Char, 16).Value = strType;

myConnection.Open();
dbcomm.ExecuteNonQuery();
myConnection.Close();
}
}
}

为什么出现了ORA-00936 缺少表达式的异常??
请问下如何解决,着急等待中
...全文
176 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiong1000 2006-07-07
  • 打赏
  • 举报
回复
已经搞定,我在数据库修改了BLOB 类型为LONG RAW
不过还是派分一下.
xiong1000 2006-07-06
  • 打赏
  • 举报
回复
现在修改了一下但是出现了以下错误" 仅可以为插入 LONG 列的 LONG 值赋值"



using System.IO;
using System.Text;

public partial class writeimage : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{


}
protected void Submit1_ServerClick(object sender, EventArgs e)
{
int intPID= int.Parse(tbpid.Text.ToString());
int intCID = int.Parse(tbcid.Text.ToString());
int intUid = 1;
string strType = tbtype.Text.ToString();
Int32 intFilelength = myfile.PostedFile.ContentLength;
Byte [ ] bytimage = new Byte[intFilelength];
Stream imagestream = myfile.PostedFile.InputStream;
imagestream.Read(bytimage,0,intFilelength);



string strconn = "Provider='OraOLEDB.Oracle';User ID=test;password=pass;Data Source='WEBDB'";
OleDbConnection myConnection = new OleDbConnection(strconn);

// String strCmd = "INSERT INTO PERFCHAR(CASE_ID,PROJECT_ID,CHART_TYPE,CHART_CONTENT) VALUES(@CID,@PID,@CTYPE,@IMAGE)";
String strCmd = "INSERT INTO tempchart(CASE_ID,PROJECT_ID,CHART_TYPE,CHART_CONTENT,OWNER_ID) VALUES(?,?,?,?,?)";
OleDbCommand dbcomm = new OleDbCommand(strCmd, myConnection);

dbcomm.Parameters.Add("@CID", OleDbType.Integer, 12).Value = intCID;
dbcomm.Parameters.Add("@PID", OleDbType.Integer, 12).Value = intPID;
dbcomm.Parameters.Add("@IMAGE",OleDbType.Binary,intFilelength).Value = bytimage;
dbcomm.Parameters.Add("@CTYPE", OleDbType.Char, 16).Value = strType;
dbcomm.Parameters.Add("@UDI", OleDbType.Integer, 12).Value = intUid;


myConnection.Open();
dbcomm.ExecuteNonQuery();
myConnection.Close();
}
Knight94 2006-07-06
  • 打赏
  • 举报
回复
替换加参数的方式,例如:
dbcomm.Parameters.Add("@IMAGE", bytimage );

如果还不行,估计就是BLOB字段的问题
xiong1000 2006-07-06
  • 打赏
  • 举报
回复
我刚才把CREATETIME,UPDATETIME都从数据库中拿到并且不插入其,但是还不可以啊
Knight94 2006-07-06
  • 打赏
  • 举报
回复
sysdate如果是系统函数的话,是否应该如此“sysdate()”
xiong1000 2006-07-06
  • 打赏
  • 举报
回复
晕了,着急的一他糊涂啊.
njuzgj 2006-07-06
  • 打赏
  • 举报
回复
关注

62,072

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧