我的朋友需要帮助,但因为我无法帮助他。我在这里请你提出意见。
他想在数据库中创建一个新表(他使用的是vb.net,mysql)。棘手的是,他希望从正在编码的输入中将新表命名为文本框。
这可能吗?从文本框中的输入创建并命名新表。
希望你能帮助我。对不起我的语法。答案 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。
是的,它可以做到,是吗?取决于....