创建表

问题描述 投票:0回答:3

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

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

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

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

vb.net visual-studio-2010 mysqli
3个回答
2
投票

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

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


1
投票

这段代码应该工作....

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

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
投票

当然可以做到。

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

例如someSql“Create Table”+ EditBox1.Text +“(.....)”

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

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

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

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

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

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

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

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

是的,它可以做到,是吗?要看....

© www.soinside.com 2019 - 2024. All rights reserved.