数据库查询在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的代码,但我没有空间问题。
答
[求助]
是的,你是对的我有多个语句在同一个查询。
我解决了它是修改我的数据库URL,因此它可以接受分号分隔的多个查询,这样的方式:
public static String URL = "jdbc:mysql://localhost/javaDb?allowMultiQueries=true";
你有五点声明,没有之一。 – chrylis