使用select获取表名

时间:2018-09-11 11:56:45

标签: vb.net

            connection.Open()
            Dim adapter1 As New MySqlDataAdapter(TextBox1.Text, connection)
            Dim table As New DataTable()
            adapter1.Fill(table)
            DataGridView1.DataSource = table

我想检测从textbox1.text中的查询中选择的表名

TextBox1.Text = "select * from Account_ID where entry = 123456"

因此在这种情况下,表名称为:Account_ID 但是,如果还有其他问题,我怎么能得到表名..尝试了Split但仍然没有给出好的结果,所以有人知道吗?

2 个答案:

答案 0 :(得分:0)

我尝试了这一点,并且它起作用了(如果您的连接字符串保持不变,我的意思是如果您不使用列枚举SELECT来更改“ *” SELECT):

    Dim words As String() = TextBox1.Text.Split(New Char() {" "c})
    MessageBox.Show(words(3)) ''words(3) is Account_ID in your case

希望有帮助。 ^^

答案 1 :(得分:0)

我很清楚这个问题。我知道Idea在使用DataAdapter时不会填充DataTable对象的名称。

因此,如果我确定只会使用简单的查询,那么我将使用正则表达式来查找表名:

Dim TableName As String = System.Text.RegularExpressions.Regex.Match(TextBox1.Text, "(?<=from )\S+", Text.RegularExpressions.RegexOptions.IgnoreCase Or Text.RegularExpressions.RegexOptions.Singleline).Value

但是,如果您确实需要养蜂,那么确实需要找到SQL-Lexer并解析代码以找到alle表名。不幸的是我什么都不知道。

也许看看Microsoft.SqlServer.Management命名空间。