[英]How to create a table with name as parameter?
我沒有在msdn的文檔中找到,如何插入執行語句表名的參數。 通過推理的平價我試過:
var myNameOfTable = "wantedName";
db.Execute("CREATE TABLE @0 (id int IDENTITY (1,1) PRIMARY KEY, data ntext, dataOfAdd datetime)", myNameOfTable);
但我得到錯誤:
[令牌行號= 1,令牌行偏移= 14,令牌錯誤= @ 0]
請幫幫我 - 如何創建名稱作為參數的表?
您通過選項提供表名,而不是使用字符串連接/ string.Format來進行查詢。 您至少使用Paramerized Query或更好地使用存儲過程而不是內聯查詢,因為它們可能導致sql注入 。 您可以閱讀此帖子存儲過程與內聯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));
我同意我寧願在這里使用合法的參數。 您可以創建一個以表名傳遞的存儲過程,想到這樣的事情:
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.