2016-10-11 11 views
1

私は現在、より大きなプログラム用にいくつかのSQLを書いています。もともと私はSQLの生のクエリを使用していました(これはうまくいきました)。そして、私はPreparedステートメントに切り替えて、セキュリティと整理を行いました。Java準備されたステートメントがデータを入力せず、キャッチにヒットする

残念ながら、ステートメントは、私の挿入または他のSQL関数を実行していないし、私はtry catchブロックでcatchを続けています。それが与えるメッセージはです。クエリは結果を返しませんしかし、私はこのメッセージが必ずしもエラーを示すとは限りません。

static String createUserTable = "CREATE TABLE IF NOT EXISTS " + USER_TABLE_NAME + "(\n" 
     + " id integer PRIMARY KEY AUTOINCREMENT,\n" 
     + " email text UNIQUE NOT NULL,\n" 
     + " publicKey Text UNIQUE NOT NULL, \n" 
     + " privateKey Text UNIQUE NOT NULL, \n" 
     + " balance INTEGER NOT NULL \n" 
     + ");"; 

答えて

1

変更

ResultSet newUser = makeNewUser.executeQuery(); 

PreparedStatement.executeUpdate()

を使用する:ここで

は、任意のヘルプは非常に

public User createNewUser(String email, String publicKey, int balance, String privateKey, int units, String type) 
{ 

    try (Connection conn = DriverManager.getConnection(connectionString);) 
    { 
     //create new user in the db 
     String query = "INSERT INTO " + USER_TABLE_NAME + " (email, publicKey, privateKey, balance) " + 
       "Values(?, ?, ?, ?)"; 

     PreparedStatement makeNewUser = conn.prepareStatement(query); 
     makeNewUser.setString(1, email); 
     makeNewUser.setString(2, publicKey); 
     makeNewUser.setString(3, privateKey); 
     makeNewUser.setInt(4, balance) 

     ResultSet newUser = makeNewUser.executeQuery(); 
     newUser.next(); 
    } 
    catch(SQLException e) 
    { 
     System.out.println("EPIC FAIL " + e.getMessage()); 
     return null; 
    } 

を高く評価し、ここではユーザーのためのテーブルスキーマです、私のコードです

makeNewUser.executeUpdate(); 

挿入物にResultSetが返されません。

関連する問題