Невозможно назвать таблицу динамически при создании - c #, sqlite - PullRequest
0 голосов
/ 26 декабря 2018

Используя то, что доступно в пространстве имен System.Data.SQLite и используя C #, я делаю операции с базой данных.Тем не менее, есть одна проблема, которую я не могу понять.

Если я хочу создать таблицу, ДИНАМИЧЕСКИ НАСТРОЕННУЮ при создании, я подумал, что способ сделать это будет ...

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

и затем сделайте это ...

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

и затем выполните

command.ExecuteNonQuery();

Но происходит то, что я получаю новую таблицу с именем "@tableName "вместо любой переменной tableName, установленной на.

Как мне заставить это работать правильно?

Ответы [ 2 ]

0 голосов
/ 26 декабря 2018

Способ, которым я подхожу к таким проблемам, состоит в том, чтобы максимально упростить.В этом случае простая замена строки должна легко решить вашу проблему без необходимости использования параметров.

Например:

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

или

        command.Text = string.Format(@"CREATE TABLE IF NOT EXISTS {0}( ... )", tableName);
0 голосов
/ 26 декабря 2018

Можете ли вы создать процедуру вместо встроенного запроса.Вы можете легко управлять хранимой процедурой, как эта. `CREATE PROCEDURE 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...