我在数据库中有一个表,其中包含列Profile_Name
和Profile_Tip
.
我的应用程序中有一个文本框,可以在其中输入表名的文本。我想用这个名字在数据库中创建一个表。我想使用Profile_Name
值作为新创建的表的列名,而不会导致 SQL 注入。请帮忙。我是使用这些语言的新手。先感谢您。
我在数据库中有一个表,其中包含列Profile_Name
和Profile_Tip
.
我的应用程序中有一个文本框,可以在其中输入表名的文本。我想用这个名字在数据库中创建一个表。我想使用Profile_Name
值作为新创建的表的列名,而不会导致 SQL 注入。请帮忙。我是使用这些语言的新手。先感谢您。
一种方法是从参数化查询中获取您需要使用的数据Profile_Name
并Profile_Tip
在其中使用它们——这应该可以解决大多数可能的 SQL 注入情况。
但是,您描述的数据库/解决方案(根据用户输入创建表)听起来像是一个糟糕的设计。在不了解更多需求的情况下很难说,但是考虑一种无需根据用户输入生成表格的方法来实现它们。
You can create dynamicaly
You can use execute with EXEC sp_executesql
Sample :
DECLARE @string NVARCHAR(100)
SELECT @string = ".."
EXEC sp_executesql @string
使用 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();
}
希望你明白了。