私は MySQL データベースを使用しており、いくつかの手順を書いています。これらのプロシージャを spring jdbc で作成しようとすると、これらのプロシージャが既に存在するというエラー メッセージが表示されます。昔ながらの方法で DriverManager を接続すると、PreparedStatement を作成して実行すると、すべて正常に動作します。なぜこれが起こっているのか誰にも分かりますか?
ここでコードで私がやっていること
...
connection = new JdbcTemplate(dataSource);
...
for(String sql: sqlScript.split( "(;)" ) ){
connection.execute(sql.trim());
}
これにより、パラメーターとして指定したプロシージャーが既に存在するという SQL-Exception が発生します。しかし、これに対して前のコード スニペットを交換すると、次のようになります。
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();
}
}
すべてが正常に動作します...
誰かがここで何が間違っているかを知っていればいいのですが...
すでに存在する私のプロシージャの少なくとも1つ...おそらくあなたのデータベースにも...
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;/