Created
July 24, 2013 18:19
-
-
Save onori/6073083 to your computer and use it in GitHub Desktop.
js、というかtitaniumとsqliteでなんやかんやのメモ。
IF NOT EXISTS ADD CULUMN をどうやったら上手く実装出来るかなー的な。
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ↓ こんなのあるんだってやつ ↓ // | |
/* テーブル情報を一括で取得 */ | |
db.execute("PRAGMA table-info(table-name)"); | |
/* テーブルのユーザーバージョンを取得 */ | |
db.execute("PRAGMA user-version"); | |
/** | |
* 以下実装例 | |
*/ | |
var main = function(){ | |
const LATEST_TABLE_VERSION = 1; // テーブルの最新バージョンを定義しておく | |
/* | |
*テーブルのバージョン情報の比較 | |
*バージョンが最新じゃなかったら、カラムの追加を行う | |
*/ | |
if (LATEST_TABLE_VERSION != getUserVersion()) { | |
var colData = data; // 追加するカラムをオブジェクトでどっかに定義 | |
for (var key in colData){ | |
var fieldName = colData[key]["fieldName"]; | |
var colSpec = colData[key]["colSpec"]; | |
addField(fieldName, colSpec); // カラムを追加するかどうかの判定へ | |
} | |
setUserVersion(LATEST_TABLE_VERSION); // 最新バージョンへ更新 | |
} | |
}(); | |
/* テーブルバージョン情報の取得 */ | |
function getUserVersion(){ | |
db.connect(); | |
var result = db.execute("PRAGMA user_version"); | |
var version = result.field(0); | |
db.close(); | |
return version; | |
} | |
/* テーブルバージョンを更新 */ | |
function setUserVersion(latestVer){ | |
db.connect(); | |
db.execute("PRAGMA user_version = " + latestVer); | |
db.close(); | |
} | |
/* カラムが存在していなければ新しく追加する */ | |
function addField(fieldName, colSpec){ | |
db.connect(); | |
var fieldExists = false; | |
var resultSet = db.execute("PRAGMA table_info(offline)"); | |
while (resultSet.isValidRow()) { | |
if(resultSet.field(1) == fieldName) { | |
fieldExists = true; | |
Ti.API.info(fieldName + "is exists"); | |
} | |
resultSet.next(); | |
} // end while | |
if(!fieldExists) { | |
// field does not exist, so add it | |
Ti.API.info(fieldName + " is make column!!") | |
db.execute('ALTER TABLE offline ADD COLUMN '+fieldName + ' ' + colSpec); | |
} | |
db.close(); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment