Какой правильный код заставляет пользователя помещать имена столбцов в таблицу в Базах данных через SQL? - PullRequest
0 голосов
/ 06 августа 2020

Я использовал этот код, чтобы пользователь поместил имя столбца в базу данных / text =

"create table oop('"+id+"' varchar(30) not null,'"+name+"' varchar(20) not null,'"+lastname+"' varchar(20) notnull,'"+salary+"' varchar(30) not null) " ;

это ошибка

Какой правильный код, чтобы пользователь поместил столбец имена внутри таблицы в Базах данных через SQL?

Ответы [ 2 ]

1 голос
/ 06 августа 2020

Просто удалите одинарные кавычки вокруг имени столбца: они обозначают буквальные строки, а не идентификаторы:

"create table oop(" + id + " varchar(30) not null," + name + " varchar(20) not null," + lastname + " varchar(20) notnull, " + salary + " varchar(30) not null)" ;

С другой стороны, если ваши идентификаторы содержат специальные символы, вам нужно заключить их в кавычки : для этого используйте соответствующий символ кавычек для вашей базы данных: MySQL требует обратных кавычек, SQL Сервер имеет квадратные скобки, ([]), Postgres и Oracle используйте двойные кавычки "".

0 голосов
/ 06 августа 2020

Создайте ПРОЦЕДУРУ, например:

CREATE PROCEDURE sproc_BuildTable 
    @TableName NVARCHAR(128)
   ,@Column1Name NVARCHAR(32)
   ,@Column1DataType NVARCHAR(32)
   ,@Column1Nullable NVARCHAR(32)
AS

   DECLARE @SQLString NVARCHAR(MAX)
   SET @SQString = 'CREATE TABLE '+@TableName + '( '+@Column1Name+' '+@Column1DataType +' '+@Column1Nullable +') ON PRIMARY '

   EXEC (@SQLString)
   GO

Эта хранимая процедура может выполняться следующим образом:

sproc_BuildTable 'Customers', 'CustomerName', 'VARCHAR (32)', 'NOT NULL '

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...