簡體   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