conn.Open(); senddate = Convert.ToDateTime(msg.Fields["MailDate"].ToString()).ToString("yyyy-MM-dd HH:mm:ss");
subject =  msg.Subject.ToString();
priority =  msg.Priority.ToString();
importance = msg.Fields["MailImportance"].ToString();
attachmentname = msg.Fields["MailAttachment"].ToString();
mailfrom = msg.From.ToString();
mailto = msg.To.ToString();
mailcc = msg.Cc.ToString();
mailbcc = msg.Bcc.ToString();
createdate = System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); try
{
System.Data.OleDb.OleDbParameter[] param = new OleDbParameter[] { new OleDbParameter("@senddate",OleDbType.DBTimeStamp),
new OleDbParameter("@subject",OleDbType.VarChar),
new OleDbParameter("@priority",OleDbType.VarChar),
new OleDbParameter("@importance",OleDbType.VarChar),
new OleDbParameter("@attachmentname",OleDbType.VarChar),
new OleDbParameter("@mailfrom",OleDbType.VarChar),
new OleDbParameter("@mailto",OleDbType.VarChar),
new OleDbParameter("@mailcc",OleDbType.VarChar),
new OleDbParameter("@mailbcc",OleDbType.VarChar),
new OleDbParameter("@createdate",OleDbType.DBTimeStamp)
};
param[0].Value = senddate;
param[1].Value = subject;
param[2].Value = priority;
param[3].Value = importance;
param[4].Value = attachmentname;
param[5].Value = mailfrom;
param[6].Value = mailto;
param[7].Value = mailcc;
param[8].Value = mailbcc;
param[9].Value = createdate; sqlscript = "insert into mailmonitor(senddate,subject,priority,importance,attachmentname,mailfrom,mailto,mailcc,mailbcc,createdate) " +
"values(@senddate,@subject,@priority,@importance,@attachmentname,@mailfrom,@mailto,@mailcc,@mailbcc,@createdate)"; cmd = new OleDbCommand(sqlscript, conn);
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
        //
}
finally
{
                                             conn.Close();  
}针对Oracle DB的Insert Parameter的操作,请问错误在那啊?急 

解决方案 »

  1.   

    One or more errors occurred during processing of command.\r\nORA-00936: missing expression
      

  2.   

    楼主漏了
    cmd.Paramters.add(param[0])
      

  3.   

    param[0].Value = senddate;
    param[1].Value = subject;不是吧
    这些应该可以代替:
    cmd.Paramters.add(param[0])的吧
      

  4.   

    你都没给command对象添加 参数,
    既然用到Parameters,那肯定得add
      

  5.   

    cmd = new OleDbCommand("insert into mailmonitor(subject) values(@subject)", conn);
    cmd.Parameters.Add("@subject",OleDbType.VarChar);
    cmd.Parameters["@subject"].Value = subject;
    cmd.ExecuteNonQuery();这一种吗?
      

  6.   

    谁能帮我看看这个貌似简单的问题啊,是Oracle DB,上面的例子错在吧,少了什么啊
      

  7.   

    我晕!在Sql Server中都能解决的,怎么到Oracle就不行了哇,网上好多例子不都是这样的吗?
      

  8.   

    记得之前弄连接access报错找了半天,不知是否跟楼主连接Oracle是同样问题,楼主可仔细检查下 
    要特别注意的是,在 OleDbParameter[] parameters = {}数组里面参数的顺序一定要和Update语句里面的参数的顺序一致。
    public void Update(ZPY.Model.News model)
    {
    StringBuilder strSql=new StringBuilder();
    strSql.Append("update News set ");
    strSql.Append("NewsTitle=@NewsTitle,");
    strSql.Append("NewsContent=@NewsContent,");
    strSql.Append("NewsFrom=@NewsFrom,");
    strSql.Append("NewsTime=@NewsTime,");
    strSql.Append("DefaultPic=@DefaultPic,");
    strSql.Append("BigClassID=@BigClassID,");
    strSql.Append("SmallClassID=@SmallClassID,");
    strSql.Append("Hits=@Hits,");
    strSql.Append("IsTop=@IsTop,");
    strSql.Append("IsPass=@IsPass,");
    strSql.Append("AddMan=@AddMan");
    strSql.Append(" where ID=@ID ");
    OleDbParameter[] parameters = {
    // 注意里面参数的顺利一定要和Update语句里面参数是顺序一致,比如Update语句里面第一个参数// 是@NewTitle,这里也是,Update语句里面最后一个参数是@ID,这样最后一个参数一定要是@ID
    new OleDbParameter("@NewsTitle", OleDbType.VarChar,100),
    new OleDbParameter("@NewsContent", OleDbType.VarChar,0),
    new OleDbParameter("@NewsFrom", OleDbType.VarChar,50),
    new OleDbParameter("@NewsTime", OleDbType.Date),
    new OleDbParameter("@DefaultPic", OleDbType.VarChar,100),
    new OleDbParameter("@BigClassID", OleDbType.Integer,4),
    new OleDbParameter("@SmallClassID", OleDbType.Integer,4),
    new OleDbParameter("@Hits", OleDbType.Integer,4),
    new OleDbParameter("@IsTop", OleDbType.Boolean,2),
    new OleDbParameter("@IsPass", OleDbType.Boolean,2),
    new OleDbParameter("@AddMan", OleDbType.VarChar,50),
    new OleDbParameter("@ID", OleDbType.Integer,4),
    };parameters[0].Value = model.NewsTitle;
    parameters[1].Value = model.NewsContent;
    parameters[2].Value = model.NewsFrom;
    parameters[3].Value = model.NewsTime;
    parameters[4].Value = model.DefaultPic;
    parameters[5].Value = model.BigClassID;
    parameters[6].Value = model.SmallClassID;
    parameters[7].Value = model.Hits;
    parameters[8].Value = model.IsTop;
    parameters[9].Value = model.IsPass;
    parameters[10].Value = model.AddMan;
    parameters[11].Value = model.ID;DbHelperOleDb.ExecuteSql(strSql.ToString(),parameters);
    }
      

  9.   

    调试下这行代码,sqlscript = "insert into mailmonitor(senddate,subject,priority,importance,attachmentname,mailfrom,mailto,mailcc,mailbcc,createdate) " +
    "values(@senddate,@subject,@priority,@importance,@attachmentname,@mailfrom,@mailto,@mailcc,@mailbcc,@createdate)";
    问题就会一目了然!
      

  10.   

    我的问题解决了,
    大家都没有把问题说到点子上去,我上面的代码没有问题。在问题在于:我是对Oracle DB进行操作的,不是Sql Server。Oracle的表示符是:?
    其他也稍有不同不过还是谢谢各位的帮忙。