select name from MSysObjects where type=1 and flags=0
⑵ 易语言 SQL语句取ACCESS表名
写了个函数
Public Function treeview()
Try
Dim connstr As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\WAB.mdb;User Id=admin;Password=; "
Dim objCn As New ADODB.Connection
objCn.Open(connstr)
Dim rstSchema As ADODB.Recordset
Dim adSchemaTables As ADODB.SchemaEnum
rstSchema = objCn.OpenSchema(ADODB.SchemaEnum.adSchemaTables)
Do Until rstSchema.EOF
If rstSchema("TABLE_TYPE").Value.ToLower = "TABLE".ToLower Then
Dim FileNode As TreeNode
ListView.Items.Add(rstSchema("TABLE_NAME").Value)
End If
rstSchema.MoveNext()
Loop
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Function
⑶ 用ADO如何遍历ACCESS中某个数据库所有表名
rst.Open Sql, cn.ConnectionString
我的数据库语言不是很好,但看了你的代码,也觉得很乱,你的代码至少有好几种方法可以修改,上面是最简单的一种,实际上你的数据库在acapp.OpenCurrentDatabase的时候已经打开了,接下来根本就不需要再次使用cn进行连接。
所以第二种改法是:
acApp.OpenCurrentDatabase (dbPath)
'Dim cn As ADODB.Connection '不需要再次连接
'Set cn = acApp.CurrentProject.Connection '不需要再次连接
Dim rst As ADODB.Recordset
Set rst = New ADODB.Recordset
Dim Sql As String
Sql = "Select * From 0012X32"
rst.Open Sql, acApp.ADOConnectString '我只需要在这里调用连接的数据就可以了,而这个连接数据存储在acApp.ADOConnectString里面。
rst.MoveFirst
acApp.OpenCurrentDatabase (dbPath)
'Dim cn As ADODB.Connection '不需要再次连接
'Set cn = acApp.CurrentProject.Connection '不需要再次连接
Dim rst As ADODB.Recordset
Set rst = New ADODB.Recordset
Dim Sql As String
Sql = "Select * From 0012X32"
rst.Open Sql, acApp.ADOConnectString '我只需要在这里调用连接的数据就可以了,而这个连接数据存储在acApp.ADOConnectString里面。
rst.MoveFirst
下面是RecordSet的OPEN的用法:
Open 方法 (ADO Recordset)
打开游标。
语法
recordset.Open Source, ActiveConnection, CursorType, LockType, Options
参数
Source 可选。Variant,计算有效的 Command 对象、SQL 语句、表名、存储过程调用、URL 或包含持久存储 Recordset 的文件名或 Stream 对象。
ActiveConnection 可选。Variant,计算有效的 Connection 对象变量名,或包含 ConnectionString 参数的 String。
CursorType 可选。CursorTypeEnum 值,确定在打开 Recordset 时提供者应使用的游标类型。默认值为 adOpenForwardOnly。
LockType 可选。LockTypeEnum 值,确定在打开 Recordset 时提供者应使用的锁定(并发)类型。默认值为 adLockReadOnly。
Options 可选。Long 值,指示提供者计算 Source 参数的方式(如果该参数表示除 Command 对象之外的某些内容),或者指示 Recordset 应该从以前保存过的文件中恢复。可以是一个或多个 CommandTypeEnum 或 ExecuteOptionEnum 值,这些值可以用位 AND 操作符组合。
注意 如果从包含持久 Recordset 的 Stream 中打开 Recordset,那么使用 adAsyncFetchNonBlocking 的 ExecuteOptionEnum 值将不起作用;提取操作将同步进行并发生阻塞。adExecuteNoRecords 或 adExecuteStream 的 ExecuteOpenEnum 值不应与 Open 一起使用。
Open 方法 (ADO Recordset)
打开游标。
语法
recordset.Open Source, ActiveConnection, CursorType, LockType, Options
参数
Source 可选。Variant,计算有效的 Command 对象、SQL 语句、表名、存储过程调用、URL 或包含持久存储 Recordset 的文件名或 Stream 对象。
ActiveConnection 可选。Variant,计算有效的 Connection 对象变量名,或包含 ConnectionString 参数的 String。
CursorType 可选。CursorTypeEnum 值,确定在打开 Recordset 时提供者应使用的游标类型。默认值为 adOpenForwardOnly。
LockType 可选。LockTypeEnum 值,确定在打开 Recordset 时提供者应使用的锁定(并发)类型。默认值为 adLockReadOnly。
Options 可选。Long 值,指示提供者计算 Source 参数的方式(如果该参数表示除 Command 对象之外的某些内容),或者指示 Recordset 应该从以前保存过的文件中恢复。可以是一个或多个 CommandTypeEnum 或 ExecuteOptionEnum 值,这些值可以用位 AND 操作符组合。
⑷ 如何用sql语句查询access中都有哪些表以及表名称
查询表及名称:
SELECTMSysObjects.NameFROMMsysObjectsWHERE(Left([Name],1)<>"~")AND(Left$([Name],4)<>"Msys")AND(MSysObjects.Type)=1ORDERBYMSysObjects.Name;
⑸ 如何遍历出ACCESS数据库中的所有表的表名
importjava.sql.Connection;
importjava.sql.DatabaseMetaData;
importjava.sql.DriverManager;
importjava.sql.ResultSet;
importjava.sql.Statement;
publicclassDBaccess{
publicstaticvoidmain(Stringargs[])throwsException{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Stringdburl="jdbc:odbc:Driver={MicrosoftAccessDriver(*.mdb)};DBQ=d:\DBTest.mdb";//此为NO-DSN方式
Connectionconn=DriverManager.getConnection(dburl);
Statementstmt=conn.createStatement();
DatabaseMetaDatadbmd=conn.getMetaData();
ResultSetrs=dbmd.getTables(null,null,"%",null);
while(rs.next()){
System.out.println("table-name:"+rs.getString(3)+"<br>");
}
stmt.close();
conn.close();
}
}
⑹ sql怎么获得所有表名
select name from [MSysObjects] where type=1 需要有相关权限
office 2003设置:工具 -> 选项 -> 视图 -> 勾选隐藏对象、系统对象。工具 -> 安全 -> 用户与组的权限 ,在对象名称中选定 MSysObjects ,然后权限中设置其读取权限。
office 2007设置:单击左上角图标 -> Access选项 -> 当前数据库 -> 导航 -> 导航选项 -> 勾选显示隐藏对象,显示系统对象。数据库工具选项卡 -> 用户和权限 -> 用户与组权限,对象类型选择表,对象名称选定MSysObjects,然后勾选“读取数据”权限
查询列的表名是[MSysColumns]
⑺ access 里的查一个数据库里的 所有表名的sql语句
貌似Access没有类似SQL Server的存储问表名的系统表或视图。
或者你可以参考一下链接,用VBA实现。
http://msdn.microsoft.com/en-us/library/Aa25
⑻ 怎样使用SQL语句修改Access里的表名
JET SQL 可以更改字段类型,无法更改字段名的,除非你连续使用几个JET SQL 先删除字段然后再插入字段,然后用UPDATE查询将保存再临时表的原字段数据恢复过来。
或者,直接用 ADOX 更改 TABLE 的 Columns(字段名) 对象的 NAME 属性即可。
Function Test()
ChangeTableFieldName_ADO "表1", "aa", "pic1"
End Function
Function ChangeTableFieldName_ADO(MyTableName As String, MyFieldName As String, strNewName As String)
'3个参数:
'MyTableName 字符串,表名
'MyFieldName 字符串,原来的字段名
'strNewName 字符串,新的字段名
'记得先引用 ADOX
Dim MyDB As New ADOX.Catalog
Dim MyTable As ADOX.Table
MyDB.ActiveConnection = CurrentProject.Connection
Set MyTable = MyDB.Tables(MyTableName)
MyTable.Columns(MyFieldName).Name = strNewName
End Function
⑼ access查询全表的SQL语句咋写
select * from 学生 where 学号 like" '%' + Me.Text0.Value + '%'" or 姓名 like" '%' + Me.Text0.Value + '%' "or 年龄="'%'+Me.Text0.Value +'%'" or 性别="'%'+Me.Text0.Value +'%'"
⑽ access2007数据库,如果是中文表名和字段名,要怎么写sql语句
我个人认为,在ACCESS中,用可视化操作做查询,比直接写SQL语更有效率。另,中文的表名和字段名和字母的没什么区别。如下所示,中文表名和中文字段名:
SELECT H_入库单.入库单号, H_入库单.入库日期, H_入库单.审核, H_入库单.审批, H_入库单.供应商, H_入库单.异动性质, H_入库单.制单人, Format([入库日期],"yyyy/mm/dd") AS 交货日期, H_入库单.打印, H_入库单.检验判定, H_入库单.判定结果
FROM H_入库单
WHERE (((H_入库单.入库单号) Like IIf(IsNull([Forms]![TH_入库单资料]![单据号码]),'*',[Forms]![TH_入库单资料]![单据号码])) AND ((H_入库单.审核) Like IIf(IsNull([Forms]![TH_入库单资料]![是否审核]),'*',[Forms]![TH_入库单资料]![是否审核])) AND ((H_入库单.审批) Like IIf(IsNull([Forms]![TH_入库单资料]![是否审批]),'*',[Forms]![TH_入库单资料]![是否审批])) AND ((H_入库单.供应商) Like IIf(IsNull([Forms]![TH_入库单资料]![供应商]),'*',[Forms]![TH_入库单资料]![供应商])) AND ((H_入库单.异动性质) Like IIf(IsNull([Forms]![TH_入库单资料]![异动性质]),'*',[Forms]![TH_入库单资料]![异动性质])) AND ((H_入库单.制单人) Like IIf(IsNull([Forms]![TH_入库单资料]![制单人]),'*',[Forms]![TH_入库单资料]![制单人])) AND ((Format([入库日期],"yyyy/mm/dd")) Between ([Forms]![TH_入库单资料]![年]) And ([Forms]![TH_入库单资料]![年1])));