2011-06-23 20 views
0

いくつかの単純なコードに問題がありますが、正確に何が間違っているのかわかりません。 以下は、私のコードです:Java SQLエラー1064

String userName = "username"; 
     String password = "password"; 
     String url = "jdbc:mysql://computername/proejct"; 
     Connection conn=null; 
     String value="some_value"; 

     try 
     { 
      Class.forName("com.mysql.jdbc.Driver").newInstance(); 
      conn = DriverManager.getConnection(url, userName, password); 

      String query1= "SELECT * FROM table WHERE column_Name=?"; 
      PreparedStatement psmt1 = conn.prepareStatement(query1); 
      psmt1.setString(1, value); 

      Boolean count=psmt1.execute(query1); 
      if(count==false) 
      { 
       //do something 
      } 
      psmt1.close(); 

     } 
     catch (Exception e) 
     { 
      e.printStackTrace(); 
     } 

そして、これは私が取得していますエラーです:

[email protected]: SELECT * FROM source2 WHERE File_Name='Messages.java' 
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?' at line 1 
    at sun.reflect.GeneratedConstructorAccessor3.newInstance(Unknown Source) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) 
    at java.lang.reflect.Constructor.newInstance(Unknown Source) 
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:409) 
    at com.mysql.jdbc.Util.getInstance(Util.java:384) 
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1054) 
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3566) 
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3498) 
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1959) 
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2113) 
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2562) 
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2512) 
    at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:781) 
    at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:624) 
    at SearchAndUpdate.recursiveUpdate(SearchAndUpdate.java:98) 
    at SearchAndUpdate.recursiveUpdate(SearchAndUpdate.java:115) 
    at SearchAndUpdate.recursiveUpdate(SearchAndUpdate.java:115) 
    at SearchAndUpdate.recursiveUpdate(SearchAndUpdate.java:115) 
    at SearchAndUpdate.recursiveUpdate(SearchAndUpdate.java:115) 
    at SearchAndUpdate.recursiveUpdate(SearchAndUpdate.java:115) 
    at SearchAndUpdate.recursiveUpdate(SearchAndUpdate.java:115) 
    at SearchAndUpdate.recursiveUpdate(SearchAndUpdate.java:115) 
    at SearchAndUpdate.recursiveUpdate(SearchAndUpdate.java:115) 
    at SearchAndUpdate.recursiveTraversal(SearchAndUpdate.java:55) 
    at SearchAndUpdate.main(SearchAndUpdate.java:40) 

は私がpreparedstementsと間違って何かをやっていますか?

私は準備文をプリントアウトし、これは次のようになります。それは見え

check the manual that corresponds to your MySQL server version for the right syntax to use near '?' at line 1 

:COLUMN_NAMEは= 'Messages.java'

+1

この '文字列Query1を=です(編集)する必要があります "テーブルSELECT * FROM WHERE COLUMN_NAME =?";'あなたの実際のクラスで声明?あなたのエラーメッセージ 'SELECT * FROM source2 WHERE File_Name = 'Messages.java''は別のステートメントを表示します。 –

答えて

3

このラインに基づいてソース2 FROM SELECT *あなたのようなステートメントは準備されていません。 ?がMySQLに送信されています。

私はこれだと思う:

Boolean count=psmt1.execute(query1); 

ResultSet count=psmt1.executeQuery(); 
+0

また、変数をブール値にする必要はありません。select文を実行しているので、ResultSetでなければなりません。それがエラーの原因になるかどうかはわかりませんが、考慮に入れる必要があります – RMT

+1

@RMT正しいです。 – NullRef

+0

ありがとうございます。出来た。 – sap