我在数据库中有一个包含Profile_Name
和Profile_Tip
列的表。
我的应用程序中有一个文本框,我输入表名的文本。我想用这个名字在数据库中创建一个表。我想使用Profile_Name
值作为新创建的表的列名而不会导致SQL注入。请帮助。我使用这些语言更新鲜。提前谢谢。
答案 0 :(得分:1)
一种方法是从Profile_Name
和Profile_Tip
获取您需要使用的数据,并在parameterized query中使用它们 - 这应该可以解决大多数可能的SQL注入情况。
但是,您描述的数据库/解决方案(根据用户输入创建表)听起来像是一个糟糕的设计。如果不了解更多有关要求的话,很难说,但想想一种实现它们的方法,而不必根据用户输入生成表格。
答案 1 :(得分: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();
}
希望你明白了。
答案 2 :(得分:0)
您可以动态创建
您可以使用EXEC sp_executesql
示例:
DECLARE @string NVARCHAR(100)
SELECT @string = ".."
EXEC sp_executesql @string