誰かがこの1つを手伝ってくれることを願っています! 文字列からSQLコメントを削除するためのJava正規表現
public static void initDatabase(ConnectionPool pool, File sqlFile){
Connection con = null;
Statement st = null;
String mySb=null;
try{
con = pool.getConnection();
mySb=IOUtils.copyToString(sqlFile);
// We use ";" as a delimiter for each request then we are sure to have well formed statements
String[] inst = mySb.split(";");
st = con.createStatement();
for(int i = 0; i<inst.length; i++){
// we ensure that there is no spaces before or after the request string
// in order not to execute empty statements
if(!inst[i].trim().isEmpty()){
st.executeUpdate(inst[i]);
}
}
st.close();
}catch(IOException e){
throw new RuntimeException(e);
}catch(SQLException e){
throw new RuntimeException(e);
}finally{
SQLUtils.safeClose(st);
pool.close(con);
}
}
(この機能が発見された:私はこの機能で、起動時にMySQLデータベースを初期化し、WebアプリケーションをBUITいる
CREATE TABLE IF NOT EXISTS users(
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
firstname VARCHAR(30) NOT NULL,
lastname VARCHAR(30) NOT NULL,
PRIMARY KEY (id),
CONSTRAINT UNIQUE (firstname,lastname)
)
ENGINE=InnoDB
;
INSERT IGNORE INTO users (firstname,lastname) VALUES ('x','y');
/*
INSERT IGNORE INTO users (firstname,lastname) VALUES ('a','b');
*/
:
私はこのようになりますSQLファイルを持っていますあなたの名前を引用していないことを私に許してください、私はそれを失った!!)
これは、SQLコメントブロックがない限り完全に動作します。
機能は基本的にはcopyToString()
機能です。 文字列からブロックコメントを削除する正規表現を作成します。ファイル内にブロックのコメント/* */
しかありません。--
はありません。私がこれまで試してみました何
:
mySb = mySb.replaceAll("/\\*.*\\*/", "");
残念ながら、私は正規表現では非常に良好ではないよ...
私は「マッチした文字列は/* comment */ real statement /* another comment*/
ようになり」のすべての問題を取得以下のように...
正規表現に '?' lazy演算子 '?'が必要です – Gabber