创建时无法动态命名表-C#,sqlite

时间:2018-12-26 18:55:22

标签: c# sqlite

使用System.Data.SQLite命名空间中的可用内容,并使用C#在执行数据库操作。但是,有一个问题似乎无法弄清。

如果我想创建一个在创建时动态命名的表,我认为这样做的方法是...

&

然后执行此操作...

command.CommandText = @"CREATE TABLE IF NOT EXISTS @tableName( ... )";

然后执行

command.Parameters.AddWithValue("@tableName", tableName);

但是正在发生的事情是,我得到一个名为“ @tableName”的新表,而不是将变量tableName设置为什么。

如何使它正常工作?

2 个答案:

答案 0 :(得分:0)

您可以创建过程而不是内联查询吗?您可以在这样的存储过程中轻松管理。`CREATEPROCEDURE Dynamic_SP

  @Table_Name sysname AS BEGIN

  SET NOCOUNT ON;

  DECLARE @DynamicSQL nvarchar(4000)

  SET @DynamicSQL = N'SELECT * FROM ' + @Table_Name

  EXECUTE sp_executesql @DynamicSQL END

答案 1 :(得分:0)

我解决此类问题的方式是尽可能简化。在这种情况下,简单的字符串替换可以轻松解决您的问题,而无需使用参数。

例如:

        command.Text = $@"CREATE TABLE IF NOT EXISTS {tableName}( ... )";

        command.Text = string.Format(@"CREATE TABLE IF NOT EXISTS {0}( ... )", tableName);