SQLite2MySQL
还是得用工具,而且必须纯福利的才行(po jie ban)。网友推荐这神器,ESF Database Migration Toolkit Professional v7.3.27
v6 的不行,很多字段转不了,用 v7 or v8 吧!
SQL COUNT 函数返回 int
RS 获取 COUNT() 值的时候,直接 getInt(1) 抛出 before start 异常,必须先 resultset.next() 一下才行;SQLite 无须这样
SELECT COUNT(id) AS count FROM news WHERE
JDBC 兼容代码如下:
if(jdbcConn.toString().indexOf("MySQL") != -1){
arr = resultset.next() ? resultset.getInt(1) : null;
}else{
// sqlite
arr = resultset.isBeforeFirst() ? resultset.getInt(1) : null;
}后来发现 SQLite 用 MySQL 的方法也行。
不能获取 mysql alias 名称
获取表各个字段的元数据时,发现不能获取 mysql alias 名称,也就是 table.xx AS foo,不能遍历出这个 foo。
var columnName = ResultSetMetaData.getColumnName(colIndex);后来发现应该用 getColumnLabel() 而不是 getColumnName();
觉得 SQLite 不够严谨,而 MySQL 有作区分了。
CREATE 返回主键
必须这样,SQLIite 不用。
rowNumber = statement.executeUpdate(sql, Statement.RETURN_GENERATED_KEYS);
ResultSet rs = statement.getGeneratedKeys();// 创建新纪录,返回id
if (rs.next()) {
rowNumber = rs.getInt(1);
// System.out.println("数据主键:" + id);
}