Database 如何从复选框选择返回数据库字段?
下面的代码返回给定表(“Employee”)的字段,但我需要返回给定数据库中所有表的字段,这可能吗?我的假设是一个For循环,循环数据库中的表并打印相应的字段,但我的努力似乎是徒劳的Database 如何从复选框选择返回数据库字段?,database,visual-studio-2010,checkbox,Database,Visual Studio 2010,Checkbox,下面的代码返回给定表(“Employee”)的字段,但我需要返回给定数据库中所有表的字段,这可能吗?我的假设是一个For循环,循环数据库中的表并打印相应的字段,但我的努力似乎是徒劳的 Public Sub getDbFields() Dim i As Integer Dim dbcon As New System.Data.OleDb.OleDbConnection("PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source = " &
Public Sub getDbFields()
Dim i As Integer
Dim dbcon As New System.Data.OleDb.OleDbConnection("PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source = " & dblocation & _
"\" & dbname)
Try
dbcon.Open()
dbDt = dbcon.GetOleDbSchemaTable(OleDb.OleDbSchemaGuid.Columns, New Object() _
{Nothing, Nothing, "Employee", Nothing})
For i = 0 To dbDt.Rows.Count - 1
'compile lbtables with a list of available tables from the database
newLine()
frmMain.lstTables.Items.Add(dbDt.Rows(i)!COLUMN_NAME.ToString())
Next
Catch ex As Exception
MessageBox.Show(ex.Message.ToString(), "Data Load Error", MessageBoxButtons.OK,
MessageBoxIcon.Exclamation)
End Try
End Sub
此例程将通过选中复选框触发,这将返回数据库中的所有列
Using con = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;" +
"Data Source=" + dblocation + "\" + dbname)
con.Open()
Dim schema as DataTable = con.GetSchema("COLUMNS")
Dim dr as DataRow
For Each dr in schema.Rows
Dim tablename as string = dr("TABLE_NAME").ToString()
if Not tablename.StartsWith("MSys") then
Console.WriteLine(dr("TABLE_NAME").ToString() + " " + dr("COLUMN_NAME").ToString())
End if
Next
End Using
请注意,vb.net中不允许使用bang(!)语法。如果您更改代码,您的代码也可以工作
dbDt = dbcon.GetOleDbSchemaTable(OleDb.OleDbSchemaGuid.Columns, New Object() _
{Nothing, Nothing, Nothing, Nothing})
这条线呢
frmMain.lstTables.Items.Add(dbDt.Rows(i)("COLUMN_NAME").ToString())
如何简单地显示可用表的所有字段?你的工作按计划进行,除了它们中有一些默认的MSsysAccess表,我不想显示,我如何删除它们?我发现你的解决方案更容易理解,我的解决方案是在MSDN的帮助下构建的,我不太确定GetOleDbSchemaTable()和GetSchema()方法之间的区别(除了代码量!!)当TABLE_NAME列以“MSys”开头时,只需将该列从输出中排除即可,答案已更新谢谢,我希望它能正常工作。然而,为了学习puposes,在循环中声明一个变量是不是不好的做法?哦,不,你为什么这么认为?。这样的局部变量有助于编写更可读的代码。有时它们是不必要的,但编译器足够聪明,可以优化您的代码,而且,如果您以编写代码为生,您在将来理解自己的代码时会遇到更少的问题。