2016-07-16 4 views
0

単純な "select * from tablename" SQLクエリは 'mode'という名前のテーブルでは動作しますが、 'user'という名前のテーブルでは動作しません。どうして?C# - データベースへのアクセス:なぜSELECT * FROMテーブルが機能しないのですか?

両方のテーブルには2つの列があります。 "mySQL"変数を "SELECT * FROM mode"として実行すると、正常に動作します。代わりに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(); 
    } 
+0

コンソールの例外はありますか? – SMA

答えて

3

USERは、あなたが私はあなたがの名前を変更することをお勧めいえ平方brakets間

SELECT * FROM [User] 

それをカプセル化するために、照会reserved word in MS-Access

の変更であるため、テーブル

+0

私はします!どうもありがとうございました! – Skemelio

+0

conn.Close()を忘れないでください。あなたのコードはすべて試しに終わっていなければなりません。nullでない場合は、conn、rdr、cmdを破棄してください;) – Esperento57

1

スティーブのように言った。あなたのコードの提案:

 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(); 
     } 
+0

確かに、ここではいくつかのusingステートメントが役に立つでしょう – Steve

関連する問題