6

@パラメータ SQL クエリの前に挿入された記号は何をしますか?

例えば:

using (SqlCommand cmd = new SqlCommand("INSERT INTO [User] values (@Forename, @Surname, @Username, @Password)", con))
{
    cmd.Parameters.AddWithValue("@Forename", txtForename.Text);
    cmd.Parameters.AddWithValue("@Surname", txtSurname.Text);
    cmd.Parameters.AddWithValue("@UserName", txtUsername.Text);
    cmd.Parameters.AddWithValue("@Password", txtPassword.Text);

    cmd.ExecuteNonQuery();
}
4

6 に答える 6

7

これは、列のフィールドを使用しようとするのではなく、クエリのパラメータ名であることを示しています。

オブジェクトを構築するときに厳密に必要かどうかは明確ではありませんがSqlParameter、一貫性を保つことは理にかなっていると思います:)

于 2013-02-28T18:53:13.463 に答える
5

ここで他の人が言ったことに反して、@キャラクターはそれ自体で何もしません. 次のいずれかでパラメーターを追加できます

.AddWithValue("ParaName",value);

また

.AddWithValue("@ParaName",value);

@ParamNameそして、それらは両方ともDB 側で名前が付けられたパラメーターに一致します。したがって、必須ではありません。

@そうは言っても、データベース側で正確に名前が付けられるため、パラメーターの前に常に使用するのは非常に標準的な方法です。

于 2013-02-28T19:07:44.230 に答える
1

魔法のようなものは何もありません-これは、SQLがパラメーターとローカル変数を示すために使用する構文にすぎません。@これは、文字列リテラルのエスケープシーケンスを処理しないようにコンパイラに指示するC#文字と同じではありません。

string stringWithSlashes = @"Use '\n' to add a new line";

または、予約語を変数名として使用できます。

string @class = "Geometry";
于 2013-02-28T18:53:09.593 に答える
0

@スクリプトの外部から値を渡すことができる入力/出力パラメータであると言います。

于 2013-02-28T18:53:18.853 に答える
0

@記号は、パラメータの名前を意味します。列のフィールドを使用します。SqlParameterCollection

Parameters

parameterName
Type: System.String

The name of the parameter.
于 2013-02-28T18:54:13.483 に答える
0

その場合の@はSQLServer構造です。T-SQL(SQL Serverプログラミング言語)は変数に@記号を使用するため、SQLServerクエリのパラメーターは@記号で指定されます。

于 2013-02-28T18:54:43.657 に答える