2017-05-28 69 views
-2

我試圖從Java執行MySQL事務。這在我的工作臺中有效,但是當我從Java執行它時,它給了我這個:你的SQL語法有錯誤; (用戶名,password)values('asd','asd')附近使用正確的語法檢查對應於您的MySQL服務器版本的手冊;設置@userId = LAST」在1號線數據庫查詢在MySQL工作臺中工作,但不是當我嘗試從Java運行它們時

這是我的查詢:

public static final String CREATE_USER = "start transaction;" + 
     " Insert into User(username, `password`) values (?, ?);" + 
     " set @userId = LAST_INSERT_ID();" + 
     " Insert into User_Roles values (@userId, ?);" + 
     " commit;"; 

的這裏是執行這個查詢

public static boolean createUser(UserEntity user) { 
    try (Connection connection = DriverManager.getConnection(Constants.URL, Constants.DATABASE_USERNAME, Constants.DATABASE_PASSWORD)) { 
     System.out.println("Database connected!"); 
     PreparedStatement st = connection.prepareStatement(DatabaseQuery.CREATE_USER); 
     st.setString(1, user.getUsername()); 
     st.setString(2, user.getPassword()); 
     if(user.getRole().equals("User")) 
      st.setInt(3, 1); 
     else 
      st.setInt(3, 2); 
     if (st.execute()) 
      return true; 
    } catch (SQLException e) { 
     e.printStackTrace(); 
    } 
    return false; 
} 

我看了看這個問題1的代碼,但我沒有空間問題。

+2

你有五點聲明,沒有之一。 – chrylis

回答

0

[求助]

是的,你是對的我有多個語句在同一個查詢。

我解決了它是修改我的數據庫URL,因此它可以接受分號分隔的多個查詢,這樣的方式:

public static String URL = "jdbc:mysql://localhost/javaDb?allowMultiQueries=true"; 
相關問題