C# C-Access数据库:为什么从表中选择*不起作用?

C# C-Access数据库:为什么从表中选择*不起作用?,c#,sql,ms-access,C#,Sql,Ms Access,简单的select*from tablename sql查询适用于名为“mode”的表,但不适用于名为“user”的表。为什么? 两个表都有两列。如果我使用mySQL变量作为SELECT*FROM模式运行程序,它工作正常。如果我改为放置user表,这意味着mySQL应该是SELECT*FROM user,那么它会引发一个异常,在FROM子句中表示语法错误。。这怎么可能 代码如下: static void Main(string[] args) { String conne

简单的select*from tablename sql查询适用于名为“mode”的表,但不适用于名为“user”的表。为什么?

两个表都有两列。如果我使用mySQL变量作为SELECT*FROM模式运行程序,它工作正常。如果我改为放置user表,这意味着mySQL应该是SELECT*FROM user,那么它会引发一个异常,在FROM子句中表示语法错误。。这怎么可能

代码如下:

static void Main(string[] args)
    {
        String connectionstring = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=Accounts.mdb";
        OleDbConnection conn;
        conn = new OleDbConnection(connectionstring);
        try
        {
            conn.Open();
        }
        catch (Exception)
        {
            Console.Write("Could not connect to database");
        }
        String mySQL = "SELECT * FROM user";
        OleDbCommand cmd = new OleDbCommand(mySQL, conn);

        OleDbDataReader rdr = cmd.ExecuteReader();

        while (rdr.Read())
        {
            Console.Write(String.Format("{0}\n,{1}\n", rdr.GetValue(0).ToString(), rdr.GetValue(1).ToString()));
        }
        Console.Read();
    }
因为用户是一个

将您的查询更改为将其封装在方形括号之间

SELECT * FROM [User]
尽管我建议您更改表的名称,因为用户是

将您的查询更改为将其封装在方形括号之间

SELECT * FROM [User]

尽管我建议您更改表格的名称,但请按照Steve所说的做。以及对代码的建议:

        String connectionstring = "Provider=Microsoft.Jet.OLEDB.4.0; Data    Source=Accounts.mdb";
        OleDbConnection conn = null;
        OleDbCommand cmd = null;
        OleDbDataReader rdr = null;
        String mySQL = "SELECT * FROM [user]";

        try
        {
            conn = new OleDbConnection(connectionstring);
            conn.Open();


            cmd = new OleDbCommand(mySQL, conn);
            rdr = cmd.ExecuteReader();

            while (rdr.Read())
            {
                Console.Write(String.Format("{0}\n,{1}\n", rdr.GetValue(0).ToString(), rdr.GetValue(1).ToString()));
            }
            Console.Read();

            conn.Close();
        }
        catch (Exception ex)
        {
            Console.Error.Write("Error founded: " + ex.Message);
        }
        finally
        {
            if (conn != null) conn.Dispose();
            if (cmd != null) cmd.Dispose();
            if (rdr != null) rdr.Dispose();
        }

照史蒂夫说的做。以及对代码的建议:

        String connectionstring = "Provider=Microsoft.Jet.OLEDB.4.0; Data    Source=Accounts.mdb";
        OleDbConnection conn = null;
        OleDbCommand cmd = null;
        OleDbDataReader rdr = null;
        String mySQL = "SELECT * FROM [user]";

        try
        {
            conn = new OleDbConnection(connectionstring);
            conn.Open();


            cmd = new OleDbCommand(mySQL, conn);
            rdr = cmd.ExecuteReader();

            while (rdr.Read())
            {
                Console.Write(String.Format("{0}\n,{1}\n", rdr.GetValue(0).ToString(), rdr.GetValue(1).ToString()));
            }
            Console.Read();

            conn.Close();
        }
        catch (Exception ex)
        {
            Console.Error.Write("Error founded: " + ex.Message);
        }
        finally
        {
            if (conn != null) conn.Dispose();
            if (cmd != null) cmd.Dispose();
            if (rdr != null) rdr.Dispose();
        }

控制台有异常吗?控制台有异常吗?我会的!非常感谢你!别忘了康涅狄格州。所有代码必须在try中,如果不为null,则在finally close中处置conn、rdr和cmd;我会的!非常感谢你!别忘了康涅狄格州。所有代码必须在try中,如果不为null,则在finally close中处置conn、rdr和cmd;的确,但是一些using语句在这里是有用的的确,但是一些using语句在这里是有用的