Создание таблицы - PullRequest
       4

Создание таблицы

0 голосов
/ 21 января 2012

Моему другу нужна помощь, но я не могу ему помочь. Я обращаюсь здесь, чтобы спросить ваше мнение.

Он хочет создать новую таблицу в базе данных (он использует vb.net, mysql). Хитрость заключается в том, что он хочет назвать новую таблицу из входных данных, кодируемых в текстовое поле.

Это возможно? Создать и назвать новую таблицу из ввода в текстовом поле.

Надеюсь, ты сможешь мне помочь. Извините за мою грамматику.

Ответы [ 3 ]

2 голосов
/ 21 января 2012

@ njm вы можете создать одну строковую переменную с запросом "Create table <name>(field1,field2....)". В приведенном выше запросе необходимо заменить текстовое поле ввода.

И передать эту строку в переменную команды mysql, имеющую собственное соединение... И просто выполни этот запрос ...

1 голос
/ 17 октября 2013

Этот код должен работать ....

Добавьте одну форму в форму для тестирования и поместите следующий код в событие клика

Imports MySql.Data.MySqlClient  

'поместите это в классе .............

Dim myConnectionString = My.Settings.MySQL_DBConnectionString  
Dim con As New MySqlConnection(myConnectionString) 

'Код на кнопке ...........

Dim createSql As String
Try
    con = New MySqlConnection(myConnectionString)
    con.Open()
    Dim tblname = "anyInputName"
    createSql = "CREATE TABLE " & tblname & " (id INT(6) NOT NULL AUTO_INCREMENT,otherField TEXT NOT NULL,PRIMARY KEY (id));"
    Dim cmd As New MySqlCommand(createSql, con)
    cmd.ExecuteNonQuery()
    cmd.Dispose()
Catch ex As Exception
    MsgBox(ex.Message)
Finally
    con.Close()
End Try

Теперь иди экспериментируй .......

0 голосов
/ 21 января 2012

Конечно, это можно сделать.

По сути, вы строите строку с оператором Create Table, а затем выполняете ее.

Например, someSql "Create Table" + EditBox1.Text + "(.....) "

НО

Создание sql из пользовательского ввода открывает вам возможность атак с использованием инъекций sql.

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

Как только у вас есть таблица, как код будет использовать ее, чтобы знать, что в базе данных есть таблица с именем "MyTable",почему это там ...

Обычно вы просто не раздадите разрешения на создание таблиц.

А как насчет зависимостей (отношений, хранимых процедур, ограничений и т. д.)

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

Еще один способ для более простых приложений - датьтаблица какое-то уникальное имя в БД, а затемиспользуйте имя, введенное пользователем в качестве псевдонима для него, поэтому Show ("MyTable") сопоставляется с Show ("UserTable1876")

Еще одна возможность, если таблица имеет определенную общую структуру и это просто пользовательКопия Фреда состоит в том, чтобы добавить еще один столбец в таблицу, а затем просто добавить идентификатор пользователя Фреда при использовании любых функций CRUD.

Так что да, это может быть сделано, не так ли?Зависит ....

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