数据库查询在MySQL工作台中工作,但不是当我尝试从Java运行它们时

问题描述:

我试图从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

[求助]

是的,你是对的我有多个语句在同一个查询。

我解决了它是修改我的数据库URL,因此它可以接受分号分隔的多个查询,这样的方式:

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