0

私はこのコードを持っています

datecreation = todaydate.Substring(6, 4) + todaydate.Substring(3, 2) + 
                   todaydate.Substring(0, 2) 

string sql = "insert into Usertable ";
sql += "values(" + mVendid + ", '" + usrname + "','" + usrpass + "', cast('" + 
datecreation + "'as DATETIME),'" + createdby + "')";

問題は、サーバーで実行されているときにエラーが発生することです。ローカル ホストまたは SQL サーバー管理では、正常に動作しています。

ウェブ上にあるときはいつでも機能しないのは一体何ですか

エラーは、varchar データ型から datetime データ型への変換により、範囲外の値が発生しました。ステートメントは終了されました。

4

5 に答える 5

0

問題は、おそらくサーバーの言語設定がマシンと異なることです。変換が機能していることを確認するには、Convert 関数を使用します。完全なチュートリアルはこちら: http://www.sqlusa.com/bestpractices/datetimeconversion/

ところで、連結文字列のようなクエリを構築することは非常に危険な方法です。これの代わりに SqlParamerts を使用してください。このアプローチを使用するさらに利点は、.NET が変換を行うことです。

于 2013-05-20T09:25:38.253 に答える
0

まず第一に、ユーザーパラメータ (より良く、より明確に、より安全に!)。次に、このエラーはフォーマットの問題が原因で発生します。

datecreation = todaydate.Substring(6, 4) + todaydate.Substring(3, 2) + 
               todaydate.Substring(0, 2) 

string date = DateTime.Parse(datecreation);

string sql = "insert into Usertable values(@mvendid, @username, @usrpass, @date, @createdby)";

var con = new SqlConnection(""); // your connection string
var cmd = new SqlCommand(sql, con);

cmd.Parameters.AddWithValue("@mvendid", mVendid);
...
cmd.Parameters.AddWithValue("@date", date);
于 2013-05-20T09:26:35.857 に答える