sqlite, h2の記法の違いと共通点

varcher.png
なんでsqlite varcher で普通に動いてんだよ..

CREATE TABLE IF NOT EXISTS tidders (key varchar(128) PRIMARY KEY ASC, name varchar(128), html text, raw text, timestamp varchar(16))
CREATE TABLE IF NOT EXISTS tidders (key varchar(128), name varchar(128), html text, raw text, timestamp varchar(16), PRIMARY KEY(key asc) )

primary key, ascの場所が異なる

CREATE INDEX IF NOT EXISTS idx_tidder ON tidders (timestamp) 

idxは共に可能

"INSERT OR REPLACE into tidders VALUES (?,?,?,?,?);"
"MERGE into tidders VALUES (?,?,?,?,?);"

h2はor replaceは無い。MERGE

org.h2.jdbc.JdbcBatchUpdateException: Value too long for column "TIMESTAMP VARCHAR(16)": "'20130715235227963' (17)"; SQL statement:
INSERT into tidders VALUES (?,?,?,?,?); [22001-172]

確かし。なんでsqlite普通に動いてんだよ..

	        final ResultSet res = stat.executeQuery("SELECT name,wiki,type,size from files where wikikey=='" + B32F.get().encodeToString(wiki.getBytes()) + "';");

イコール符の取り扱い。===とか==とか=とかあるけれどもh2は=一回しか受け付けない。sqlite ===両方受け付けてないか..?

あとは"だとか'だとか'''だとか\'エスケープ符号の取り扱い…`バッククオート…

hamari.png
パスが/hoge/hoge/hoge.h2.dbでもh2.dbまで指定してはいけない。hogeの指定で終わりにすること

prepared statementは全く同じで動作する

	        final Statement stat = con.createStatement();
	        stat.executeUpdate("CREATE TABLE IF NOT EXISTS files (key varchar(128), name varchar(128), wiki varchar(128), wikikey varchar(128), type varchar(128), size integer, bl blob, primary key(key asc));");
	        stat.executeUpdate("CREATE INDEX IF NOT EXISTS idx_file ON files (wikikey) ");
	        final PreparedStatement prep = con.prepareStatement("INSERT into files VALUES (?,?,?,?,?,?,?);");
	        prep.setString(1, f.getKey());
	        prep.setString(2, f.getName());
	        prep.setString(3, f.getWiki());
	        prep.setString(4, f.getWikikey());
	        prep.setString(5, f.getCtyp());
	        prep.setInt(6, f.getSize());
	        prep.setBytes(7, f.getByts());
	        prep.addBatch();
	        con.setAutoCommit(false);
	        prep.executeBatch();
	        con.setAutoCommit(true);
	    	//CNF.close(con);

jettyTiddlywikiについてはsqliteからh2へのすげ替えは3時間で終了した。

    last modified: 15 July 2013 [ View wiki source Close ]
     
SEARCH DIFFERENCE ATTACHMENT RECENT POST