如何创建一个名称为参数的 table?

How to create a table with name as parameter?

我没有在 msdn 的文档中找到如何插入以执行语句 table 名称的参数。通过同等推理,我尝试了:

var myNameOfTable = "wantedName";
db.Execute("CREATE TABLE @0 (id int IDENTITY (1,1) PRIMARY KEY, data ntext, dataOfAdd datetime)", myNameOfTable);

但是我得到错误:

[ Token line number = 1,Token line offset = 14,Token in error = @0 ]

请帮帮我 - 如何使用名称作为参数创建 table?

您正在通过选项提供 table 名称,而不是使用 string concatenation/string.Format 进行查询。你至少要用Paramerized Query or better use stored procedure instead of inline query as they could result in sql injection. You can read this post Stored procedures vs. inline SQL来比较。

db.Execute("CREATE TABLE " + myNameOfTable + " (id int IDENTITY (1,1) PRIMARY KEY, data ntext, dataOfAdd datetime)" );

您使用的语法可以使用 string.Format

实现
db.Execute(string.Format("CREATE TABLE {0} (id int IDENTITY (1,1) PRIMARY KEY, data ntext, dataOfAdd datetime)", myNameOfTable));

我同意我宁愿在这里使用合法参数。您可以创建一个存储过程,将 table 名称传递给该存储过程,您会想到这样的事情:

CREATE PROCEDURE dbo.usp_CreateTable
    @TableName VARCHAR(50)
AS
BEGIN

    DECLARE @SqlScript NVARCHAR(4000)
    SET @SqlScript = 'CREATE TABLE ' + @TableName + ' (ID INT IDENTITY (1,1) NOT NULL)'

    EXEC sp_executesql @SqlScript

END