3

以下のように@nameを使用したため、SQLテーブルでデータを挿入、更新、または削除するときに「@」を使用する理由を知りたいだけです。

 cmd.Parameters.Add(new SqlParameter("@fname", txtfname.Text));
4

3 に答える 3

4

参照: SqlParameter.ParameterName プロパティ - MSDN

ParameterName は@paramnameの形式で指定されます。パラメータに依存する SqlCommand を実行する前に、ParameterName を設定する必要があります。

@SqlCommandコマンド テキストでパラメータの値を区別できるように、によって使用されます。

SqlCommand cmd = new SqlCommand("Select * from yourTable where ID = @ID", conn);
                                                                  ^^^^^^^
                                                   //This identifies the parameter

パラメータ名が指定されていない場合@は、追加されます。次のソース コードを見てください(ここから取得) 。

 internal string ParameterNameFixed {
            get {
                string parameterName = ParameterName;
                if ((0 < parameterName.Length) && ('@' != parameterName[0])) {
                    parameterName = "@" + parameterName;
                }
                Debug.Assert(parameterName.Length <= TdsEnums.MAX_PARAMETER_NAME_LENGTH, "parameter name too long");
                return parameterName;
            }
        }

編集:

@パラメータで符号を使用しない場合は、次のケースを検討してください。

using (SqlConnection conn = new SqlConnection(connectionString))
        {
            using (SqlCommand cmd = new SqlCommand())
            {
                conn.Open();
                cmd.CommandText = "SELECT * from yourTable WHERE ID = ID";
                cmd.Connection = conn;
                cmd.Parameters.AddWithValue("ID", 1);
                DataTable dt = new DataTable();
                SqlDataAdapter da = new SqlDataAdapter(cmd);
                da.Fill(dt);
            }
        }

に変換されるため、上記はすべてのレコードを取得します。パラメータに上記をSELECT * from yourTable WHERE 1=1使用すると、に対するレコードのみが取得されます@IDID =1

于 2013-05-17T07:40:12.457 に答える
0

SQL Server の変数とパラメーターの前には @ 文字が付きます。

例:

create procedure Something
  @Id int,
  @Name varchar(100)
as
...

C# コードでパラメーター オブジェクトを作成してデータベースと通信する場合は、@ 文字を使用してパラメーター名も指定します。

(SqlParameter オブジェクトには文書化されていない機能があり、指定しないとパラメーター名に @ が追加されます。)

于 2013-05-17T07:44:02.647 に答える
0

わかりました、私の前のポスターに害はありませんが、できるだけ簡単に説明しようとしますので、7 歳の子供でも理解できます. :)

私の経験から、.SQLの ' @ ' は、「正確なデータ型または正確な名前が使用されることを明確にしていない」場合に使用されます。「後で」「@」の正確な値を指摘しています。

たとえば、誰かが巨大な .SQL クエリを開発したとします。これには、たとえば、それを受け取ったすべての人の名前が含まれています。

SELECT column_name,column_name FROM table_name WHERE column_name = @YOURNAME;

@YOURNAME = 'John Doe';

したがって、この場合、誰でも簡単に @YOURNAME に名前を書き込むだけで、(起動時に) クエリが自動的に次のように変換されます。

SELECT column_name,column_name FROM table_name WHERE column_name = 'John Doe';

PS: 構文エラーと不適切な用語で申し訳ありませんが、今では理解していただけるはずです。:)

于 2013-05-17T07:46:27.967 に答える