oracle中表结构,id(varchar2(50)),name(varchar2(50)),commitdate(date)C#语句: 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)这条语句。到底能不能用参数,怎么用。请指点。
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(DEPT_CODE,DEPT_NAME,DEPT_DATE) 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 = dt;
cmd.Parameters.AddWithValue(":dt",DateTime.Now);
//cmd.Parameters.Add("@count", OleDbType.VarChar, 50);
//cmd.Parameters["@count"].Value = count;
cmd.Parameters.AddWithValue(":count", count);
if (cmd.ExecuteNonQuery() > 0)
{
MessageBox.Show("插入成功");
count++;
}
}这个方法也不行
错误:
ORA-01008: 并非所有变量都已绑定
string sql = "insert into DEPARTMENT(DEPT_CODE,DEPT_NAME,DEPT_DATE) values(:count,'0',to_date('2010-6-24 15:09:02','yyyy-mm-dd hh24:mi:ss'))"; using (OracleCommand cmd = new OracleCommand(sql, conn))
{
OracleParameter p1 = new OracleParameter("count", OracleDbType.Varchar2, 50);
p1.Value = count;
cmd.Parameters.Add(p1); if (cmd.ExecuteNonQuery() > 0)//执行到此处,死在这里了,不知为什么。
{
MessageBox.Show("插入成功");
count++;
}
}
这里的:不要
顺便说下,如果是存储过程,参数前也不能加符号,而且参数名称要和存储过程的参数名称一样。