C# C-Access数据库:为什么从表中选择*不起作用?
简单的select*from tablename sql查询适用于名为“mode”的表,但不适用于名为“user”的表。为什么? 两个表都有两列。如果我使用mySQL变量作为SELECT*FROM模式运行程序,它工作正常。如果我改为放置user表,这意味着mySQL应该是SELECT*FROM user,那么它会引发一个异常,在FROM子句中表示语法错误。。这怎么可能 代码如下: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
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语句在这里是有用的