0
datetime=Datetime.Now;
string strquery = @"INSERT INT0 [Destination_CMS].[dbo].[Destination_CMS_User] 
     values('" + userid + "','" + email + "','" 
     + userType + "','" + userStatus + "','" + processed + "','" 
     + datetime.ToLongDateString() + "')";
cmd = new SqlCommand(strquery, con);
con.Open();
cmd.ExecuteNonQuery();
con.Close();

エラーが表示されます: 'Destination_CMS' 付近の構文が正しくありません。

4

6 に答える 6

6

INT0ではなく、あなたが書いINTOた。

また、パラメータ化されたクエリを使用します。

于 2013-01-16T09:10:07.023 に答える
2

INT0に変更してみてくださいINTO

于 2013-01-16T09:10:08.907 に答える
2
INSERT INT0 [Destination_CMS].[dbo]

INT0(ゼロ)ではなくINSERT INTOだと思います

于 2013-01-16T09:10:15.427 に答える
1

クエリを画面に出力し、構文エラーの場所を確認します。

その隣に; 次のように、パラメータ化されたクエリを使用します。

string query = "INSERT INTO [tablename] ( column, column ) VALUES (@p_param1, @p_param2)";
var command = new SqlCommand (query);
command.Parameters.Add ("@p_param1", SqlDbType.DateTime).Value = DateTime.Now;
...
于 2013-01-16T09:10:31.497 に答える
0

パラメータ化されたクエリを使用していない場合、SQLインジェクションのリスクがあります。

あなたの問題は解決したように見えるので、次の質問は、コースの要件に応じてNHibernate / EFなどのORMを使用しないのはなぜかということですが、私の本のADO.NET配管は、パフォーマンスが絶対的な問題です。

于 2013-01-16T09:27:06.323 に答える
0

代わりにこれをストアド プロシージャとして記述することもできます。これにより、このようなタイプミスを見つけて修正しやすくなるという利点があります。

于 2013-01-16T09:30:38.940 に答える