using System;
using System.Data;
using System.Data.OleDb;
class AccessConnectPureCode
{
public static void Main()
{
string connectionString = @"provider=Microsoft.Jet.OLEDB.4.0; data source=C:\Users\AAAAA\Documents\Users.mdb";
OleDbConnection myOleDbConnection = new OleDbConnection(connectionString);
OleDbCommand myOleDbCommand = myOleDbConnection.CreateCommand();
myOleDbCommand.CommandText = "SELECT * FROM User";
myOleDbConnection.Open();
// Считываем данные
OleDbDataReader myOleDbDataReader = myOleDbCommand.ExecuteReader();
while (myOleDbDataReader.Read())
{
Console.WriteLine(string.Format("Login: {0}, Mail: {1}, Pasword: {2}",
myOleDbDataReader["Login"],
myOleDbDataReader["Mail"],
myOleDbDataReader["Password"]));
}
myOleDbDataReader.Close();
}
}
这是我的代码,我需要将mdb文件连接到C#控制台应用程序,但这里
myOleDbCommand.CommandText = "SELECT * FROM User";
我得到了一个例外
未处理的类型' System.Data.OleDb.OleDbException'发生在System.Data.dll
中其他信息:FROM子句中的语法错误。
我在User
Users.mdb
中列出了所有这些列
如何从该表中读取字段?
答案 0 :(得分:5)
尝试
myOleDbCommand.CommandText = "SELECT * FROM [User]";
在这种情况下,用户可能是保留字。
答案 1 :(得分:2)
User
是MS Access中的reserved word。您应该使用方括号,如[USER]
myOleDbCommand.CommandText = "SELECT * FROM [User]";
作为一般推荐,请勿在数据库中使用保留关键字作为标识符和对象名称。
如果已使用保留字,则可以避免出现错误消息 用括号([])围绕每个单词的出现。然而, 最好的解决方案是将名称更改为非保留字。
还可以使用using
statement来处理您的OleDbConnection
,OleDbCommand
和OleDbDataReader
之类的内容;
using(var myOleDbConnection = new OleDbConnection(connectionString))
using(var myOleDbCommand = myOleDbConnection.CreateCommand())
{
...
...
using(var myOleDbDataReader = myOleDbCommand.ExecuteReader())
{
...
}
}
答案 2 :(得分:1)
答案 3 :(得分:1)
user
是SQL语法中的关键字,您应该使用[user]
。
以下是我之前项目代码的一部分:
string strconnection = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=bank.mdb";
public void InsertMethod(string inputt, string runningtimee, string kindd)
{
try
{
OleDbConnection objconnection = new OleDbConnection(strconnection);
OleDbCommand cmd = new OleDbCommand();
OleDbCommand objcommand = new OleDbCommand("INSERT INTO Table1" +
"(db_account_number,db_name,db_family) " +
"VALUES(@txtaccount,@txtname, @txtfamily)", objconnection);
objcommand.Parameters.AddWithValue("@db_account_number", runningtimee);
objcommand.Parameters.AddWithValue("@db_name", kindd);
objcommand.Parameters.AddWithValue("@db_family", inputt);
objconnection.Open();
objcommand.ExecuteNonQuery();
objconnection.Close();
}
catch (OleDbException a)
{
MessageBox.Show(a.ToString());
}