如何使用 OleDb, C# 执行 SHOW 语句
本文关键字:执行 SHOW 语句 何使用 OleDb | 更新日期: 2023-09-27 18:37:13
尝试按照 c# 代码获取数据库中的所有表名,但我收到一条错误消息,说:
"System.Data.OleDb.OleDbException (0x80040E14): 无效的 SQL 语句; 预期的"删除"、"插入"、"过程"、"选择"或"更新"..."
OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + tbx_Source.Text + ";");
OleDbCommand cmd = new OleDbCommand("SHOW TABLES;", conn);
OleDbDataReader reader;
try
{
conn.Open();
reader = cmd.ExecuteReader();
if (reader.HasRows)
{
while (reader.Read())
{
cbx_Tables.Items.Add(reader.GetValue(0).ToString());
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
如何使用 OleDb 执行此类命令?
谢谢:)
由于您想显示数据库(即 mdb)中的所有表,您可以尝试
DbProviderFactory factory = DbProviderFactories.GetFactory("System.Data.OleDb");
DataTable userTables = null;
using (DbConnection connection = factory.CreateConnection())
{
connection.ConnectionString = "Provider=Microsoft.Ace.OLEDB.12.0;Data
Source=C:'test'testfile.accdb;Jet OLEDB:Database Password=yourrPassword;";
string[] restrictions = new string[4];
restrictions[3] = "Table";
connection.Open();
// Get list of user tables
userTables = connection.GetSchema("Tables", restrictions);
foreach (DataRow item in userTables.Rows) // You can use simple
//looping to retreive the table Name
{
}
}
为我工作
虽然 Kyle 的答案是我更喜欢使用 DataTable
,但您可以通过制作OleDbCommand
命令文本来使用问题代码中的OleDBDataReader
Select TABLE_NAME From INFORMATION_SCHEMA.TABLES
我认为你不能。
SHOW
不是数据操作语句。
数据操作语言 =
SELECT ... FROM ... WHERE ...
INSERT INTO ... VALUES ...
UPDATE ... SET ... WHERE ...
DELETE FROM ... WHERE ...
数据定义语言 =
CREATE TABLE ...
DROP TABLE ... ;
ALTER TABLE ... ADD ... INTEGER;