0

在此处输入图像描述我在数据库中有一个表,其中包含列Profile_NameProfile_Tip.

我的应用程序中有一个文本框,可以在其中输入表名的文本。我想用这个名字在数据库中创建一个表。我想使用Profile_Name值作为新创建的表的列名,而不会导致 SQL 注入。请帮忙。我是使用这些语言的新手。先感谢您。

4

3 回答 3

1

一种方法是从参数化查询中获取您需要使用的数据Profile_NameProfile_Tip在其中使用它们——这应该可以解决大多数可能的 SQL 注入情况。

但是,您描述的数据库/解决方案(根据用户输入创建表)听起来像是一个糟糕的设计。在不了解更多需求的情况下很难说,但是考虑一种无需根据用户输入生成表格的方法来实现它们。

于 2012-08-31T14:08:35.857 回答
0

You can create dynamicaly

You can use execute with EXEC sp_executesql

Sample :

DECLARE @string NVARCHAR(100) 
SELECT @string = ".."
EXEC sp_executesql @string
于 2012-08-31T14:14:57.767 回答
0

使用 SqlParameter!例如,

SqlConnection connection;
        // initializes connection to your DB
        using (SqlCommand command = connection.CreateCommand())
        {
            command.CommandText = @"ALTER TABLE @TABLE_NAME ADD @COLUMN_NAME varchar(50)";
            command.CommandType = System.Data.CommandType.Text;
            command.Parameters.AddWithValue("@TABLE_NAME", tableName);
            command.Parameters.AddWithValue("@COLUMN_NAME", columnName);

            command.ExecuteNonQuery();
        }

希望你明白了。

于 2012-08-31T14:13:51.893 回答