簡體   English   中英

在Timestamp C#中使用db2 odbc參數

[英]Using db2 odbc parameters with Timestamp C#

我正在嘗試在C#中使用ODbc對DB2查詢使用參數,但是Timestamp字段給我帶來了問題。 我正在使用DB2 Client 9.7,並且updateDate是DateTime類型。 這是我的代碼:

string commandString = "INSERT INTO DATABASENAME(USERNAME, UPDATE_DATE) VALUES ('?', TIMESTAMP_FORMAT('?', 'YYYY-MM-DD HH24:MI:SS'))";

OdbcConnection con = new OdbcConnection(conString);
OdbcCommand command = new OdbcCommand(commandString, con);

command.Parameters.AddWithValue("?username", userName);
command.Parameters.AddWithValue("?update_date", updateDate.ToString("yyyy-MM-dd HH:mm:ss"));

//execute the stuff
con.Open();
command.ExecuteNonQuery();
con.Close();

這是我收到的錯誤:

ERROR [42815] [IBM][CLI Driver][DB2] SQL0171N  The data type, length or value of the argument for the parameter in position "1" of routine "SYSIBM.TIMESTAMP_FORMAT" is incorrect. Parameter name: "".  SQLSTATE=42815

我還嘗試過使用DB2中包含的常規TIMESTAMP()函數,並使用它接受的兩種格式(例如TIMESTAMP('2016-10-20-12.00.00.000000')TIMESTAMP('2016-10-20 12:00:00' )),但這給了我這個錯誤:

ERROR [22007] [IBM][CLI Driver][DB2] SQL0180N  The syntax of the string representation of a datetime value is incorrect.  SQLSTATE=22007

有人知道我要去哪里錯嗎?

編輯:它不使用參數就可以工作,參數不能與DB2一起使用嗎?

我無法對此進行測試,但是我認為您不應將參數標記括在引號中,它們是參數,而不是文字。 您的陳述應如下所示

string commandString = "INSERT INTO DATABASENAME(USERNAME, UPDATE_DATE) VALUES (?,?)";

然后您也不需要從DateTime到string到TIMESTAMP雙重轉換:

command.Parameters.AddWithValue("?username", userName);
command.Parameters.AddWithValue("?update_date", updateDate);

可能是時間戳格式錯誤。

嘗試做updateDate.ToString(“ yyyy-MM-dd.HH.mm.ss.ffffff”));;

試試吧:

string commandString =string.format("INSERT INTO DATABASENAME(USERNAME, UPDATE_DATE) VALUES ('{0}', '{1}')", userName, updateDate.ToString("yyyy-MM-dd.HH.mm.ss.ffffff"));

OdbcConnection con = new OdbcConnection(conString);
OdbcCommand command = new OdbcCommand(commandString, con);

//execute the stuff
con.Open();
command.ExecuteNonQuery();
con.Close();
        string commandString = "INSERT INTO DATABASENAME(USERNAME, UPDATE_DATE) VALUES ('?','?')";

        OdbcConnection con = new OdbcConnection(conString);
        OdbcCommand command = new OdbcCommand(commandString, con);

        OdbcParameter p1 = command.CreateParameter();
        p1.DbType = DbType.AnsiString;
        p1.Value = userName;
        command.Parameters.Add(p1);

        OdbcParameter p2 = command.CreateParameter();
        p2.DbType = DbType.AnsiString;
        p2.Value = updateDate.ToString("yyyy-MM-dd HH:mm:ss");
        command.Parameters.Add(p2);


        con.Open();
        command.ExecuteNonQuery();
        con.Close();

暫無
暫無

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

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