Member 13084733 Ответов: 2

Как создать имя таблицы данных с помощью текстового поля


Можете ли вы помочь мне с этой командой sql

Что я уже пробовал:

CON.Open();
     SqlCommand comand =new SqlCommand("CREATE TABLE Dobavljaci +textBox2.Text(ID int,Naziv Char(50),Sjediste Char(50),Adresa Char (50),Ziroracun Char (50),sifra Char(50),JIB Char(50);",CON);

     comand.ExecuteNonQuery();
CON.Close();

и позже один как использовать
"SELECT","INSERT"


Но как добавить дополнительное имя с помощью textbox2. text
поэтому я хочу создать таблицу с именем " Dobavljaci and textbox. text"



Ладно теперь у меня другая проблема
SqlCommand comand = new SqlCommand("CREATE TABLE Dobavljaci" +textBox.Text+ "(ID int NOT NULL identity(1,1) primary key,Naziv varchar(50),Sjediste varchar(50),Adresa varchar (50),Ziroracun varchar (50),sifra varchar(50),JIB varchar(50),Ulaz money,Izlaz money);", CON);

на этом типе sql команды у меня есть проблема когда я ввожу два слова в текстовое поле он дает мне ошибку неправильный синтаксис рядом со вторым словом когда у меня есть только одно слово он создает таблицы

2 Ответов

Рейтинг:
20

Michael_Davies

Вам нужно пространство после таблицы ключевых слов, в настоящее время у вас есть таблица<whateverisintextbox2>, объединенная вместе.


Member 13084733

второй код работает, но мне нужно добавить дополнительное имя или текст с помощью textbox. text

Michael_Davies

Пожалуйста, объясните, что вы имеете в виду, вы говорите, что это работает, но вы говорите, что вам нужно добавить дополнительное имя.

В вашем SQL нет места между таблицей слов и содержимым textbox2.text, поэтому, если бы в textbox2. text было слово "door", результирующий SQL был бы;

Кроме того, вы не можете закрыть открывающую скобку, там должна быть еще одна) после Кливера char (50) и перед ;

Создать TABLEdoor(ИД инт Naziv тип char(50),Sjediste тип char(50),адреса типа char (50),Ziroracun тип char (50),Сифра тип char(50),стрелового типа char(50));

Который должен потерпеть неудачу, так как TABLEdoor не является ключевым словом SQL, поставьте пробел, чтобы получить;

Создать двери стол(ИД инт Naziv тип char(50),Sjediste тип char(50),адреса типа char (50),Ziroracun тип char (50),Сифра тип char(50),стрелового типа char(50));

Что тогда должно сработать.

Member 13084733

Извините это главная проблема я редактирую вопрос

Michael_Davies

Хорошо, теперь вы изменили SQL, но textbox2.text находится внутри строки и поэтому будет рассматриваться только как слово textbox2.text, а не содержимое элемента управления textbox2.text.

Также обратите внимание, что вам все еще не хватает закрывающей скобки, я добавил ее ниже.

Здесь вы идете;

Команда sqlcommand системы Comand =новая команда sqlcommand("создать таблицу Dobavljaci" + поле textbox2.Текст + "(идентификатор типа int,Naziv тип char(50),Sjediste тип char(50),адреса типа char (50),Ziroracun тип char (50),Сифра тип char(50),стрелового типа char(50));",кон);

БУДЬТЕ ОСТОРОЖНЫ, НЕ СТОИТ ОБЪЕДИНЯТЬ СТРОКУ ДЛЯ SQL-КОМАНДЫ, ВЫ УЯЗВИМЫ ДЛЯ SQL-ИНЪЕКЦИИ, ТАК КАК ПОЛЬЗОВАТЕЛЬ МОЖЕТ ВВЕСТИ ЧТО УГОДНО И МОЖЕТ ПОСЕЯТЬ ХАОС.

Вам также нужно будет убедиться, что строка не содержит недопустимых символов для имени таблицы, иначе она потерпит неудачу, вам нужно будет использовать Try..Catch.

Member 13084733

Спасибо вам это работает и я создал
строки ТИК = поле textbox2.Текст;

Member 13084733

у вас снова проблема

Рейтинг:
2

Patrice T

Цитата:
Как создать имя таблицы данных с помощью текстового поля

Вся эта идея кажется мне неправильной, она выглядит как неправильное решение другой проблемы.
Можете ли вы описать исходную проблему, ведущую к этому решению ?
Будет ли у вас пользователь, чтобы ввести имя таблицы textbox2.text каждый раз, когда он захочет получить к нему доступ ?

Не решение вашего вопроса, а еще одна проблема, которая у вас есть.
Никогда не создавайте SQL-запрос путем объединения строк. Рано или поздно вы сделаете это с помощью пользовательских вводов, и это откроет дверь уязвимости под названием "SQL injection", она опасна для вашей базы данных и подвержена ошибкам.
Одна кавычка в имени - и ваша программа рухнет. Если пользователь вводит имя типа "Брайан О'Коннер", это может привести к сбою вашего приложения, это уязвимость SQL-инъекции, и сбой-это наименьшая из проблем, вредоносный пользовательский ввод, и он продвигается к командам SQL со всеми учетными данными.
SQL-инъекция-Википедия[^]
SQL-инъекция[^]


Member 13084733

Во первых я знаю о SQL инъекции это просто для вопроса
во-вторых, я создам несколько клиентов в программном обеспечении, и мне нужно создать таблицу dobavljaci (suppliers ) с именем этого клиента, так что позже, когда я добавлю некоторые данные, я могу использовать конкретную таблицу этого поставщика, конечно, у одного клиента будет несколько таблиц

Patrice T

Использование состоит в том, чтобы иметь одну таблицу или набор таблиц с полем в качестве идентификатора клиента.