Mik*_*ike 14 .net c# mysql parameterized
在C#应用程序中,我通过创建带参数的查询字符串来构建查询,然后添加参数及其值的命令.例如:
string query = "UPDATE USERS u SET u.username = @PARM_USERNAME " +
"WHERE u.id = @PARM_USERID ";
command.Parameters.AddWithValue("@PARM_USERNAME", user.username);
command.Parameters.AddWithValue("@PARM_USERID", user.id);
command.Connection.Open();
int res = command.ExecuteNonQuery();
Run Code Online (Sandbox Code Playgroud)
看看带有参数的查询是否有用,这在C#/ Visual Studio中是否可行?我可以查看command.CommandText,但它只显示与上面查询相同的内容,其中包含参数占位符.如果它有帮助,这是针对MySQL的.
Chr*_*mus 12
如果要查看应用参数的查询:
string tmp = command.CommandText.ToString();
foreach (SqlParameter p in cmd.Parameters) {
tmp = tmp.Replace('@' + p.ParameterName.ToString(),"'" + p.Value.ToString() + "'");
}
Run Code Online (Sandbox Code Playgroud)
然后tmp将使用所应用的参数保存查询.每个参数都用单引号括起来.
当然,执行起来并不安全.我用它来进行调试.
有没有保证,还有就是这样的事“与参数查询应用”。我希望驱动程序可以简单地以SQL形式发送命令,并以适当的形式发送参数以表示每个值。为什么要麻烦转义值等,只是让查询处理器取消转义并在另一端解析它们?仅以某种描述的二进制格式传递数据会更有效且风险更低。
您应该将其视为使用某些数据(参数)的某些代码(SQL),并使这两个概念完全分开。如果您需要记录正在发生的事情,我会将其分别记录为参数化SQL和参数值。