相关疑难解决方法(0)

你能在SQL FROM语句中使用SQLParameter吗?

我试图在C#中针对SQL Server数据库创建参数化查询.

码:

        query = new StringBuilder( "SELECT @fields FROM @tables");

        using(SqlConnection connection = new SqlConnection(connection))
        {
            SqlCommand command = new SqlCommand(query.ToString(), connection);
            command.Parameters.AddWithValue("@fields", fields.ToString());
            command.Parameters.AddWithValue("@tables", tables.ToString());

            try
            {
                connection.Open();
                Int32 rowsAffected = command.ExecuteNonQuery();
                Console.WriteLine("RowsAffected: {0}", rowsAffected);
            }
            catch(Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
Run Code Online (Sandbox Code Playgroud)

奇怪的部分是失败的消息"必须声明表变量"@ tables \".但是正如你所看到的,它已经被明确定义了.

所以我的问题是:

  1. 你能传递一个参数来定义FROM语句中的表列表吗?
  2. 如果可以,为什么这不起作用?

c# sql parameters

3
推荐指数
1
解决办法
1616
查看次数

AddWithValue sql注入安全吗?为什么?

我希望这是一个正确的问题,parameters.addwithvalue工作怎么样?我正在考虑防止SQL注入?我一直在Stackoverflow上看很多,很多人说"//反对sql注入".我一直在盲目地使用它,但现在我必须提交一份关于我的任务的文章,我需要解释为什么它是保护.我一直试图在MSDN上找到一些东西,找到了这个:

SQL注入但它使用了parameters.add.然后我读到他们替换.Add.AddWithValue,是真的吗?那么任何官员呢?

所以基本上,任何人都可以更好地搜索一些可以防止SQL注入的官方文书工作?或者可以告诉我它是如何工作的?

我不是想让你做我的工作,我只是找不到自己.

我这样使用它:

using (SqlConnection conn = new SqlConnection(connectionString))
using (var cmd = conn.CreateCommand())
{
        conn.Open();
        String queryString = "DELETE FROM dbo.SecurityAccess WHERE Username = ' @Username ";
        cmd.CommandText = queryString;
        cmd.Parameters.AddWithValue("@Username", Username);
        cmd.ExecuteNonQuery();
}
Run Code Online (Sandbox Code Playgroud)

c# sql

2
推荐指数
1
解决办法
5284
查看次数

Command.Parameters.Add() 如何防止 SQL 注入?C#

我现在已经阅读了很多有关 SQL 注入并试图阻止它的内容。我读过几篇关于如何以及为何使用的文章

Command.Parameters.Add()
Run Code Online (Sandbox Code Playgroud)

就像这里解释的那样

但我仍在寻找它如何以及为何防止 SQL 注入的答案。

MSDN 没有太多这方面的信息。

这是我如何使用它的示例:

SqlCommand myCommand = new SqlCommand("SELECT * FROM table WHERE name = @name ", myConnection);
myCommand.Parameters.Add("@name", SqlDbType.NVarChar, 20).Value = "MaMu2";
Run Code Online (Sandbox Code Playgroud)

我的代码对于 SQL 注入是否安全,还是我错了?

编辑:主要问题是:它内部如何工作?

c# sql-server sql-injection

-1
推荐指数
1
解决办法
5410
查看次数

标签 统计

c# ×3

sql ×2

parameters ×1

sql-injection ×1

sql-server ×1