以下のように@nameを使用したため、SQLテーブルでデータを挿入、更新、または削除するときに「@」を使用する理由を知りたいだけです。
cmd.Parameters.Add(new SqlParameter("@fname", txtfname.Text));
以下のように@nameを使用したため、SQLテーブルでデータを挿入、更新、または削除するときに「@」を使用する理由を知りたいだけです。
cmd.Parameters.Add(new SqlParameter("@fname", txtfname.Text));
参照: 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
使用すると、に対するレコードのみが取得されます@
ID
ID =1
SQL Server の変数とパラメーターの前には @ 文字が付きます。
例:
create procedure Something
@Id int,
@Name varchar(100)
as
...
C# コードでパラメーター オブジェクトを作成してデータベースと通信する場合は、@ 文字を使用してパラメーター名も指定します。
(SqlParameter オブジェクトには文書化されていない機能があり、指定しないとパラメーター名に @ が追加されます。)
わかりました、私の前のポスターに害はありませんが、できるだけ簡単に説明しようとしますので、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: 構文エラーと不適切な用語で申し訳ありませんが、今では理解していただけるはずです。:)