请问下,我准备用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 缺少表达式的异常??
请问下如何解决,着急等待中

解决方案 »

  1.   

    sysdate如果是系统函数的话,是否应该如此“sysdate()”
      

  2.   

    我刚才把CREATETIME,UPDATETIME都从数据库中拿到并且不插入其,但是还不可以啊
      

  3.   

    替换加参数的方式,例如:
    dbcomm.Parameters.Add("@IMAGE", bytimage );如果还不行,估计就是BLOB字段的问题
      

  4.   

    现在修改了一下但是出现了以下错误" 仅可以为插入 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();
            }
      

  5.   

    已经搞定,我在数据库修改了BLOB 类型为LONG RAW
    不过还是派分一下.