
net.vvakame.blaz.sqlite.KeysDao Maven / Gradle / Ivy
The newest version!
package net.vvakame.blaz.sqlite;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;
import java.util.ArrayList;
import java.util.List;
import net.vvakame.blaz.Key;
import net.vvakame.blaz.util.KeyUtil;
import static net.vvakame.blaz.sqlite.Constants.*;
class KeysDao {
private KeysDao() {
}
public static Key resultSetToKeyAsSingle(ResultSet rs) throws SQLException {
if (!rs.first()) {
return null;
}
Key newKey = new Key();
newKey.setKind(rs.getString(COL_KIND));
newKey.setId(rs.getLong(COL_ID));
newKey.setName(rs.getString(COL_NAME));
return newKey;
}
public static List resultSetToKeys(ResultSet rs) throws SQLException {
List keyList = new ArrayList();
if (!rs.next()) {
return keyList;
}
do {
String keyStr = rs.getString(COL_KEY_STRING);
keyList.add(KeyUtil.stringToKey(keyStr));
} while (rs.next());
return keyList;
}
public static void insert(Connection conn, Key key) throws SQLException {
PreparedStatement pre = null;
try {
pre =
conn.prepareStatement("INSERT INTO " + TABLE_KEYS + " (" + COL_ID + ", "
+ COL_NAME + ", " + COL_KIND + ", " + COL_KEY_STRING
+ ") values (?, ?, ?, ?)");
if (key.getName() == null) {
pre.setLong(1, key.getId());
pre.setNull(2, Types.VARCHAR);
} else {
pre.setNull(1, Types.INTEGER);
pre.setString(2, key.getName());
}
pre.setString(3, key.getKind());
pre.setString(4, KeyUtil.keyToString(key));
pre.executeUpdate();
} finally {
if (pre != null) {
pre.close();
}
}
}
public static void delete(Connection conn, Key key) throws SQLException {
PreparedStatement pre = null;
try {
pre =
conn.prepareStatement("DELETE FROM " + TABLE_KEYS + " WHERE " + COL_KEY_STRING
+ " = ?");
pre.setString(1, KeyUtil.keyToString(key));
pre.executeUpdate();
} finally {
if (pre != null) {
pre.close();
}
}
}
public static List query(Connection conn, Key... keys) throws SQLException {
StringBuilder builder = new StringBuilder();
List args = new ArrayList();
builder.append("SELECT * FROM " + TABLE_KEYS + " WHERE ").append(COL_KEY_STRING)
.append(" IN (");
for (int i = 0; i < keys.length; i++) {
builder.append("?");
if (i != keys.length - 1) {
builder.append(",");
}
args.add(KeyUtil.keyToString(keys[i]));
}
builder.append(")");
PreparedStatement pre = null;
try {
pre = conn.prepareStatement(builder.toString());
for (int i = 1; i <= args.size(); i++) {
pre.setString(i, args.get(i - 1));
}
return resultSetToKeys(pre.executeQuery());
} finally {
if (pre != null) {
pre.close();
}
}
}
public static long getLatestId(Connection conn, String kind) throws SQLException {
PreparedStatement pre = null;
try {
pre =
conn.prepareStatement("SELECT max(" + COL_ID + ") as maxValue FROM "
+ TABLE_KEYS + " WHERE " + COL_KIND + " = ?");
pre.setString(1, kind);
ResultSet resultSet = pre.executeQuery();
resultSet.next();
return resultSet.getLong(1);
} finally {
if (pre != null) {
pre.close();
}
}
}
public static boolean isExists(Connection conn, Key key) throws SQLException {
PreparedStatement pre = null;
try {
pre =
conn.prepareStatement("SELECT count(*) as cnt FROM " + TABLE_KEYS + " WHERE "
+ COL_KEY_STRING + " = ?");
pre.setString(1, KeyUtil.keyToString(key));
ResultSet resultSet = pre.executeQuery();
resultSet.next();
return resultSet.getLong(1) != 0;
} finally {
if (pre != null) {
pre.close();
}
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy