我正在使用 MySQL 数据库并编写了一些程序。如果我尝试使用 spring jdbc 创建这些过程,我会收到这些过程已经存在的错误消息。如果我将老式方式与 DriverManager 创建一个 PreparedStatement 并执行它,一切都会正常工作。有谁知道为什么会这样?
在代码中我在做什么
...
connection = new JdbcTemplate(dataSource);
...
for(String sql: sqlScript.split( "(;)" ) ){
connection.execute(sql.trim());
}
这导致我作为参数提供的过程已经存在的 SQL 异常。但是,如果我对此交换前面的代码片段:
for(final String sql: sqlScript.split( "(;/)" ) ) {
if (sql.trim().length() > 0)
try {
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/test?"
+ "user=root" );
PreparedStatement ps =
conn.prepareCall(sql);
ps.execute();
} catch (SQLException e) {
e.printStackTrace();
}
}
一切正常...
如果有人知道这里出了什么问题,那就太好了...
至少我的一个程序已经存在......甚至可能在你的数据库中......
create procedure insertUser(
in p_firstname varchar(50),
in p_lastname varchar(50),
in p_username varchar(25)
)
begin
declare l_username varchar(25);
select username into l_username
from movielist.user where username = p_username;
if l_username is null then
insert into movielist.User (firstname, lastname, username) values
(p_firstname, p_lastname, p_username);
end if;
end;/