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

时间:2015-02-19 04:53:35

标签: c# razor sql-server-ce webmatrix

我没有在msdn的文档中找到,如何插入执行语句表名的参数。通过推理的平价我试过:

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

但我得到错误:

  

[令牌行号= 1,令牌行偏移= 14,令牌错误= @ 0]

请帮帮我 - 如何创建名称作为参数的表?

2 个答案:

答案 0 :(得分:3)

您通过选项提供表名,而不是使用 string concatenation / string.Format 来进行查询。您至少使用Paramerized Query或更好地使用存储过程而不是内联查询,因为它们可能会导致sql injection。您可以阅读此帖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));

答案 1 :(得分:1)

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

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