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但仍然没有给出好的结果,所以有人知道吗?
答案 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
命名空间。