簡體   English   中英

ORA-00917:缺少逗號錯誤INSERT

[英]ORA-00917: missing comma error INSERT

以下是我用來嘗試將項目插入到oracle數據庫中的c#代碼。 我收到了缺少的逗號錯誤,但是我沒有任何丟失。

string queryString = @"INSERT INTO MAILLIST (GRPID, FNAME, MI, LNAME, ADDR1, ADDR2, CITY, STATE,";
queryString += @" ZIP, ZIP4, DOB, SSN, STATUS, DATEADDTOLIST, GENDER, AGE, MEDIA, BANK_ACCT, PRODCODE,";
queryString += @" UNIQUESSN, ACCT_TYPE, ROUTING_NO, EMAIL)";
queryString += @" Values ('" + item.grpid + @"', '" + item.fname + @"', '" + item.mid_init + @"',";
queryString += @" '" + item.lname + @"', '" + item.addr1 + @"', '" + item.addr2 + @"',";
queryString += @" '" + item.city + @"', '" + item.state + @"', '" + item.zip_code + @"',";
queryString += @" '" + item.zip4 + @"', " + item.birth_date + @", '" + item.ssn + @"',";
queryString += @" '" + item.status + @"', " + item.date_added + @", '" + item.gender + @"',";
queryString += @" '" + item.age + @"', '" + item.media + @"', '" + item.bank_acct + @"',";
queryString += @" '" + item.prodcode + @"', '" + item.unique_ssn + "', '" + item.acct_type + @"',";
queryString += @" '" + item.routing_num + @"', '" + item.email + @"')";

輸出后,查詢看起來像

INSERT INTO MAILLIST (GRPID, FNAME, MI, LNAME, ADDR1, ADDR2, CITY, STATE, ZIP, ZIP4,
DOB, SSN, STATUS, DATEADDTOLIST, GENDER, AGE, MEDIA, BANK_ACCT, PRODCODE, UNIQUESSN,
ACCT_TYPE, ROUTING_NO, EMAIL) Values ('0001190', 'John', '', 'Smith', 'address', '',
'Oak Ridge', 'TN', '37830', '',
04/08/1985 12:00:00 AM, '000000000', 'A ',
07/20/2015 12:00:00 AM,
'M', 29, 'NICK', '0000000', '12345', '00000000', 'S', '000000000', '')

當我嘗試使用command.Parameters.Add()插入數據時,出現錯誤提示“數值不足”

string queryString = @"INSERT INTO MAILLIST (GRPID, FNAME, MI, LNAME, ADDR1, ADDR2, CITY, STATE,";
                queryString += @" ZIP, ZIP4, DOB, SSN, STATUS, DATEADDTOLIST, GENDER, AGE, MEDIA, BANK_ACCT, PRODCODE,";
                queryString += @" UNIQUESSN, ACCT_TYPE, ROUTING_NO, EMAIL)";
                queryString += @" VALUES (:GRPID, :FNAME, :MI, :LNAME, :ADDR1, :ADDR2, :CITY, :STATE";
                queryString += @" :ZIP, :ZIP4, :DOB, :SSN, :STATUS, :DATEADDTOLIST, :GENDER, :AGE, :MEDIA, :BANK_ACCT,";
                queryString += @" :PRODCODE, :UNIQUESSN, :ACCT_TYPE, :ROUTING_NO, :EMAIL)";

                Console.WriteLine(queryString);

                using (OracleConnection connection = new OracleConnection(connectionString))
                {
                    OracleCommand command = connection.CreateCommand();
                    command.CommandText = queryString;

                    try
                    {
                        connection.Open();

                        command.Parameters.Add(new OracleParameter("GRPID", item.grpid));
                        command.Parameters.Add(new OracleParameter("FNAME", item.fname));
                        command.Parameters.Add(new OracleParameter("MI", item.mid_init));
                        command.Parameters.Add(new OracleParameter("LNAME", item.lname));
                        command.Parameters.Add(new OracleParameter("ADDR1", item.addr1));
                        command.Parameters.Add(new OracleParameter("ADDR2", item.addr2));
                        command.Parameters.Add(new OracleParameter("CITY", item.city));
                        command.Parameters.Add(new OracleParameter("STATE", item.state));
                        command.Parameters.Add(new OracleParameter("ZIP", item.zip_code));
                        command.Parameters.Add(new OracleParameter("ZIP4", item.zip4));
                        command.Parameters.Add(new OracleParameter("DOB", item.birth_date));
                        command.Parameters.Add(new OracleParameter("SSN", item.ssn));
                        command.Parameters.Add(new OracleParameter("STATUS", item.status));
                        command.Parameters.Add(new OracleParameter("DATEADDTOLIST", item.date_added));
                        command.Parameters.Add(new OracleParameter("GENDER", item.gender));
                        command.Parameters.Add(new OracleParameter("AGE", item.age));
                        command.Parameters.Add(new OracleParameter("MEDIA", item.media));
                        command.Parameters.Add(new OracleParameter("BANK_ACCT", item.bank_acct));
                        command.Parameters.Add(new OracleParameter("PRODCODE", item.prodcode));
                        command.Parameters.Add(new OracleParameter("UNIQUESSN", item.unique_ssn));
                        command.Parameters.Add(new OracleParameter("ACCT_TYPE", item.acct_type));
                        command.Parameters.Add(new OracleParameter("ROUTING_NO", item.routing_num));
                        command.Parameters.Add(new OracleParameter("EMAIL", item.email));

                        OracleDataReader reader = command.ExecuteReader();

                        reader.Close();

問題是因為您沒有正確處理日期。 它應該是:

INSERT INTO maillist (grpid,
                      fname,
                      mi,
                      lname,
                      addr1,
                      addr2,
                      city,
                      state,
                      zip,
                      zip4,
                      dob,
                      ssn,
                      status,
                      dateaddtolist,
                      gender,
                      age,
                      media,
                      bank_acct,
                      prodcode,
                      uniquessn,
                      acct_type,
                      routing_no,
                      email)
VALUES      ('0001190',
             'John',
             '',
             'Smith',
             'address',
             '',
             'Oak Ridge',
             'TN',
             '37830',
             '',
             TO_DATE ('04/08/1985 12:00:00 AM', 'mm/dd/yyyy hh:mi:ss am'), -- note the use of to_date!
             '000000000',
             'A ',
             TO_DATE ('07/20/2015 12:00:00 AM', 'mm/dd/yyyy hh:mi:ss am'), -- note the use of to_date!
             'M',
             29,
             'NICK',
             '0000000',
             '12345',
             '00000000',
             'S',
             '000000000',
             '');

但是,正如@a_horse_with_no_name所建議的那樣,您不應創建這樣的insert語句-而是應使用綁定變量。

回覆。 您的綁定變量感知版本,則似乎在:STATE綁定變量后缺少逗號。 我認為應該是:

string queryString = @"INSERT INTO MAILLIST (GRPID, FNAME, MI, LNAME, ADDR1, ADDR2, CITY, STATE,";
                queryString += @" ZIP, ZIP4, DOB, SSN, STATUS, DATEADDTOLIST, GENDER, AGE, MEDIA, BANK_ACCT, PRODCODE,";
                queryString += @" UNIQUESSN, ACCT_TYPE, ROUTING_NO, EMAIL)";
                queryString += @" VALUES (:GRPID, :FNAME, :MI, :LNAME, :ADDR1, :ADDR2, :CITY, :STATE,";
                queryString += @" :ZIP, :ZIP4, :DOB, :SSN, :STATUS, :DATEADDTOLIST, :GENDER, :AGE, :MEDIA, :BANK_ACCT,";
                queryString += @" :PRODCODE, :UNIQUESSN, :ACCT_TYPE, :ROUTING_NO, :EMAIL)";

堅持進行參數綁定嘗試。 前進會更好。

您最新的Not enough values錯誤似乎是因為:STATE:ZIP之間缺少逗號。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM