创建表

时间:2012-01-21 14:56:12

标签: vb.net visual-studio-2010 mysqli

我的朋友需要帮助,但因为我无法帮助他。我在这里请你提出意见。

他想在数据库中创建一个新表(他使用的是vb.net,mysql)。棘手的是,他希望从正在编码的输入中将新表命名为文本框。

这可能吗?从文本框中的输入创建并命名新表。

希望你能帮助我。对不起我的语法。

3 个答案:

答案 0 :(得分:2)

@njm 你可以创建一个查询“Create table <name>(field1,field2....)”的字符串变量 在上面的查询必须替换为您的输入文本框。

并将此字符串传递给具有自己连接的mysql命令变量... 只需执行此查询...

答案 1 :(得分:1)

此代码应该有效....

向表单添加一个按钮以进行测试,并将以下代码放入其单击事件

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

现在去试验.......

答案 2 :(得分:0)

当然可以做到。

基本上你在其中构建一个带有Create Table语句的字符串,然后执行它。

e.g。 someSql“Create Table”+ EditBox1.Text +“(.....)”

BUT

从用户输入构建sql会打开你的SQL注入攻击。

合法标识符,某些字符无法使用,有些必须转义,名称可能已在使用中...

一旦你有了表,代码将如何使用它,知道数据库中有一个名为“MyTable”的表,为什么它就在那里......

您通常不会分发创建表权限。

依赖关系(关系,存储过程,约束等)

有几种方法可以解决这个问题,一种方法是在另一个应用程序中创建表,构建规则并以某种方式存储元信息,代码可以用它来使用表。

另一个更简单的应用程序,是在数据库中为表提供一些唯一的名称,然后使用用户输入的名称作为它的别名,因此Show(“MyTable”)被映射到Show(“UserTable1876”) )

另一种可能性是,如果表具有明确的通用结构,并且只是用户Fred的副本是向表中添加另一列,然后在使用任何CRUD函数时简单地添加Fred的UserID。

是的,它可以做到,是吗?取决于....