2017-07-11 8 views
0

私はAsp.netを使用して、残りのWeb APIを作成しました。投稿を使用してテーブルにデータを挿入しようとしたときに、この例外が発生します。1日の列 'Date'に不正な日付値:'07/11/2017 12:00:00 AM '値をMySQLデータベースに挿入するには?日付の値が正しくありません:行1の列 'Date'に対して?

public long addmeterreadingrecord(meterreadingrecords meterreadingrecord) 
{ 
    MySqlConnection myconn = getDBConn(); 
    String sqlstr = 
    "INSERT INTO meterreadingrecords (ID,Date,User,ImageLink,ActualMeterReadingID) VALUES ('" 
      + meterreadingrecord.Id + "','" + meterreadingrecord.Date + "','" 
      + meterreadingrecord.User + "','" + meterreadingrecord.Imagelink+"','" 
      + meterreadingrecord.ActualmeterreadingId+"')"; 
     MySqlCommand cmd = new MySqlCommand(sqlstr, myconn); 
     myconn.Open(); 
     cmd.ExecuteNonQuery(); 
     myconn.Close(); 
     myconn.Dispose(); 
     long id = cmd.LastInsertedId; 
     return id; 
    } 

残りのクライアントを使用してデータを挿入する方法。

{ 
"ID" : "zzz", 
"Date": "11/07/2017", 
"User" : "Me", 
"ImageLink" : "testimg", 
"ActualMeterReadingID" : "ccc" 
} 

mysql dbの日付のデータ型はDateです。 DateTimeではありません。

+0

SQLインジェクションを実証サンプルを避けてください - それは、負の原因となり優れた実践を無視して転覆する反応。 [編集]ポストは、https://stackoverflow.com/questions/652978/parameterized-query-for-mysql-with-c-sharpに示すように、パラメータ化されたクエリを使用します。 –

答えて

0

MySQL expects a four digit year followed by a two-digit month and a two-digit day.昨日の日付(7月9日)は、次のとおりです。

'2017-07-09' 

MySQLは(区切り文字として:を受け入れる含む)代替フォーマットのためのいくつかの手当を作りませんが、それはまだ形式は年month-であることを期待します日付。値11/07/2017は、この規格では正しい日付ではありません。これを説明するには、STR_TO_DATEを使用します。

STR_TO_DATE('11/07/2017', '%d/%m/%Y') 

また、参考のために、this is a list of valid date string % variables.

+0

あなたが言ったように私は試みました。しかし、この例外を今すぐ取得する不正な日付の値を切り捨てました:'11/07/2017 12:00:00 AM ' String sqlstr = "INSERT INTOの読み込みレコード(ID、日付、ユーザー、ImageLink、ActualMeterReadingID)VALUES('" + meterreadingrecord。 "+"%d /%m /%Y ")+" + + "+" + " + meterreadingrecord.ActualmeterreadingId + "')"; – batwing

+0

'%d /%m /%Y%H:%i:%s'を試しましたか?あなたはそれを動作させるために少しフォーマットすることが必要かもしれません。 – cwallenpoole

+0

ありがとうございます。今それは働くことができます。 – batwing

関連する問題