asp.net Parameters.SQL文のWhere文でのAddWithValueメソッドの使用方法

1654 ワード

彼の書き方はこうです.
 
  
view plaincopy to clipboardprint?
string strWhere = "'% %'";
strSql = "SELECT * FROM area Where [name] like @strWhere";//
cmd.Parameters.AddWithValue("@strWhere", strWhere);
string strWhere = "'% %'";
strSql = "SELECT * FROM area Where [name] like @strWhere";//
cmd.Parameters.AddWithValue("@strWhere", strWhere);

なぜなら、ASP.NETはSQL文を生成する時、Likeの後に更に1回の引用符をプラスして、誤りをもたらして、もしSQL Serverの追跡マネージャーを開けるならば、実行する文が次のように見えることができます
 
  
exec sp_executesql N'SELECT * FROM Article Where [Title] like @strWhere',N'@strWhere nvarchar(5)',@strWhere=N'% %'

理解に難くありませんが、OldDbCommandでも似たようなやり方があります.
正しいコードは次のとおりです.
 
  
string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\aspxWeb.mdb;";
OleDbConnection con = new OleDbConnection(connectionString);
con.Open();
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = con;
string strWhere = "% %";
string strSql = "SELECT * FROM Document Where [Author] like @strWhere";
cmd.Parameters.AddWithValue("@strWhere", strWhere);
cmd.CommandText = strSql;
OleDbDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
Response.Write(dr["Author"] + " : " + dr["Title"] + "
");
}
con.Close();
con.Dispose();