0

我正在使用 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;/
4

0 回答 0