2

データベースに日付を挿入しようとすると、formatExceptionが発生します。

日付を文字列に変換し、データベースに挿入しようとしました。どうしても試しましたが、例外としてキャッチされます。以下のコードを見つけてください。

$ DateTime date =  Convert.ToDateTime(rows["Limit_maturity_date"].ToString());
string newdate = date.ToShortDateString();//.Replace("/","");
DateTime dd = DateTime.ParseExact(newdate, "M/d/yyyy", CultureInfo.InvariantCulture);
queryString = "INSERT INTO Table (CODE, NUM, CCODE, LCODE, SACCODE, LIM, L_DATE)" +
                    " VALUES ('" + int.Parse(rows["code"].ToString()) + "','" + int.Parse(rows["number"].ToString()) + "','" + int.Parse(rows["Ccode"].ToString()) + "','" + int.Parse(rows["Lcode"].ToString()) + "','" + int.Parse(rows["Sacode"].ToString()) + "','" + int.Parse(rows["limit"].ToString()) + "','" + newdate "')";
4

1 に答える 1

4

基本的に、データベースにデータを誤って挿入するという問題に取り組んでいます。

すべてを文字列に変換し、それらの文字列をSQLに含めます。そうしないでください。代わりにパラメータ化されたSQLを使用し、最初に文字列に変換せずに、値をパラメータに直接入力します。これにより、次の3つの問題が解決されます。

たくさんの文字列変換が行われているようですが、それらは必要ないと思います。値を文字列に変換したいときはいつでも、本当にそうする必要があるかどうかを自問してください。次のように、値を文字列に変換してから別の型に変換するコードを作成するときはいつでも、次のようになります。

int.Parse(rows["code"].ToString())

...あなたは本当に疑わしいはずです。実行時のタイプはrows["code"]何ですか?代わりにキャストを使用できますか?

于 2012-11-21T11:38:10.150 に答える