读书人

C#操作oracle时为什么不能使用参数解

发布时间: 2013-03-26 21:10:11 作者: rapoo

C#操作oracle时,为什么不能使用参数
oracle中表结构,id(varchar2(50)),name(varchar2(50)),commitdate(date)

C#语句:

C# code
               string sql = "insert into DEPARTMENT(id,name,commitdate) values(@count,'0',to_date(@dt,'yyyy-mm-dd hh24:mi:ss'))";                using (OleDbCommand cmd = new OleDbCommand(sql, conn))                {                    cmd.Parameters.Add("@dt", OleDbType.VarChar, 50);                    cmd.Parameters["@dt"].Value =DateTime.Now;                        //cmd.Parameters.AddWithValue("@dt",DateTime.Now);//此法也不行                    cmd.Parameters.Add("@count", OleDbType.VarChar, 50);                     cmd.Parameters["@count"].Value = count;//count已赋值                    if (cmd.ExecuteNonQuery() > 0) //此处已设断点                    {                        MessageBox.Show("插入成功");                        count++;                    }                }


执行cmd.ExecuteNonQuery()时,报错:
在执行命令过程中,发生了一个或多个错误。
ORA-00936: 缺失表达式。
把参数改为值就可以插入。
不知为何不让用参数。
既然不让用参数,为什么还能用cmd.Parameters.AddWithValue("@dt",DateTime.Now)这条语句。到底能不能用参数,怎么用。请指点。

[解决办法]
为什么不用问号?

string sql = "insert into DEPARTMENT(id,name,commitdate) values(?,'0',to_date(?,'yyyy-mm-dd hh24:mi:ss'))";
[解决办法]
oracle里面的sql @要换成:
[解决办法]
不懂这个问题。。。帮lz顶了。。。
[解决办法]
在SQL里参数要带@,oracle里的参数不要@
[解决办法]
探讨

引用:
oracle里面的sql @要换成:

C# code

string sql = "insert into DEPARTMENT(DEPT_CODE,DEPT_NAME,DEPT_DATE) values(:count,'0',to_date(:dt,'yyyy-mm-dd hh24:mi:ss'))";
……

[解决办法]
数据库中的字段我没用过date类型,也许date类型的参数不要加:,
顺便说下,如果是存储过程,参数前也不能加符号,而且参数名称要和存储过程的参数名称一样。
我的异常网推荐解决方案:oracle存储过程,http://www.myexception.cn/oracle-develop/177537.html

读书人网 >C#

热点推荐