【C#】 SQLのパラメータにSQL文を使用したい場合
解決方法が分からないためご教授願います。
SQL文「SELECT count(*) FROM T_USER where id = @id」の@idにSQL文を挿入したいです。
ですが、実行すると値がうまく取得できません。
私が実行したい、パラメーター代入後のSQL文のイメージは以下です。
「SELECT count(*) FROM T_USER where id = (SELECT MAX(id) FROM M_USER)」
ですが、おそらく代入されたものがダブルクォーテーションで囲まれた状態で実行されてしまっているため、うまく値を取得できていません。
「SELECT count(*) FROM T_USER where id = "(SELECT MAX(id) FROM M_USER)"」
@idに(SELECT MAX(id) FROM M_USER)をダブルクォーテーションなしで代入する方法はございますか?
C#
1using System.Configuration; 2using System.Data.SqlClient; 3 4public void Connect1() 5{ 6 // 接続文字列の取得 7 var connectionString = ConfigurationManager.ConnectionStrings["sqlsvr"].ConnectionString; 8 9 // データベース接続の準備 10 var connection = new SqlConnection(connectionString); 11 12 // データベースの接続開始 13 connection.Open(); 14 15 // 実行するSQLの準備 16 var command = new SqlCommand(); 17 command.Connection = connection; 18 command.CommandText = @"SELECT count(*) FROM T_USER where id = @id"; 19 20 command.Parameters.Add(new SqlParameter("@id", "(SELECT MAX(id) FROM T_USER)")); 21 22 // SQLの実行 23 command.ExecuteNonQuery(); 24 25 // データベースの接続終了 26 connection.Close(); 27} 28 29
上記は例文です。最初からcommand.CommandText = "SELECT count(*) FROM T_USER where id = (SELECT MAX(id) FROM M_USER)"にしたらよいと思われるかもしれませんが、実際に動かしたいものは違います。。SQLのパラメーターにSQL文を代入する方法を知りたいです。拙い文章ですみませんが、よろしくお願いいたします。
回答3件
あなたの回答
tips
プレビュー