繁体   English   中英

缺少逗号,oracle ORA-00917

[英]Missing Comma, oracle ORA-00917

我有用于将值插入到oracle数据库中的这段代码,并且出现“缺少逗号”异常,但我看不到它的来历。

 "insert into comandadvd values('" + txt_idComanda.Text + "','" +
                    txtFormat.Text + "','" + "', to_date('" + txtData.Text + "','DDMMYYY')'" + txtIdTipPlata.Text + "','" + txtPret.Text + "')";

另外,这里是它的Oracle代码:

INSERT INTO ComandaDVD (Id_Comanda,Id_Format,Data_Comanda,Id_TipPlata,Pret)
VALUES ('1','1','12-11-2011','1','200');

提前致谢!

  • 尝试一次

"insert into comandadvd values('" + txt_idComanda.Text + "','" + txtFormat.Text + "','" + "' to_date('" + txtData.Text + "','DDMMYYY')'" + "','" + txtIdTipPlata.Text + "','" + txtPret.Text + "')";

  1. 约会之前您还有一个逗号。 日期部分to_date不应在引号内。
  2. 日期格式错误。 您在示例中提到了DD-MM-YYYY

试试吧,因为我尚未测试过,如果您遇到错误,请告诉我。

"insert into comandadvd values('" + txt_idComanda.Text + "','" + txtFormat.Text + "','" + "to_date('" 
+ txtData.Text + "','DD-MM-YYY')" + txtIdTipPlata.Text + "','" + txtPret.Text + "')";

错误的直接原因是

"','" + "', to_date('"

fragmanent。 最好的解决方案是使用参数化查询:

  @"insert into comandadvd (
      Id_Comanda,
      Id_Format,
      Data_Comanda,
      Id_TipPlata,
      Pret)
    values ( 
      :prm_Id_Comanda,
      :prm_Id_Format,
      :prm_Data_Comanda,
      :prm_Id_TipPlata,
      :prm_Pret)";

如果出于某种原因您无法使用参数化查询,请使用格式化的查询:

   String.Format(
     @"insert into comandadvd (
         Id_Comanda,
         Id_Format,
         Data_Comanda,
         Id_TipPlata,
         Pret)
       values ( 
         {0},
         {1},
         to_date('{2}', 'DDMMYYY'),
         {3},
         {4})",
      txt_idComanda.Text,
      txtFormat.Text, 
      txtData.Text,
      txtIdTipPlata.Text,
      txtPret.Text);

指导原则是使您的SQL可读

您在查询的to_date(之前添加了逗号。更正后的代码如下:

"INSERT INTO ComandaDVD (Id_Comanda,Id_Format,Data_Comanda,Id_TipPlata,Pret) VALUES (" +
    "'" + txt_idComanda.Text + "', " +
    "'" + txtFormat.Text + "', " +
    "to_date('" + txtData.Text + "', 'DDMMYYY'), " +
    "'" + txtIdTipPlata.Text + "', " + 
    "'" + txtPret.Text + "')";

似乎存在多个问题:

  1. 最大的问题是您没有运行代码来查看其真正作用-见证以下事实:代码中使用的表名与SELECT显示的表名具有大写字母不同,并且发布的SELECT有一个字段列表代码不会生成; 因此,您发布的SELECT文本显然不是由此代码生成的。 如果您实际上已经运行了代码并生成了INSERT语句,您会发现它无法像您认为的那样起作用,并且您可以自己对其进行修复。
  2. 此代码将在to_date之前放置多个逗号。
  3. 该代码不会在txtIdTipPlata.Text之前生成逗号。
  4. INSERT语句应始终包含要插入的字段名称的列表。

祝你好运。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM