Swift 버전의 SQLite 도움말 클래스
SQLiteHelper
SQLiteHelper 클래스 만들기
/// SQLite
///
/// SQLite
class SQLiteHelper
{
// ...
}
단례
private static let instance = SQLiteHelper()
///
class var sharedInstance: SQLiteHelper
{
return instance
}
전역 변수
var db: COpaquePointer = nil
데이터베이스 열기
///
///
/// :param: dbName
///
/// :returns:
func openDatabase(dbName: String) -> Bool
{
let path = dbName.documentPath()
println(path)
return sqlite3_open(path, &db) == SQLITE_OK
}
예제 데이터 테이블 만들기
/// T_Department T_Employee
///
/// :returns:
func createTable() -> Bool
{
let sql = "CREATE TABLE
" +
"IF NOT EXISTS T_Department (
" +
"id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
" +
"DepartmentNo CHAR(10) NOT NULL DEFAULT '',
" +
"Name CHAR(50) NOT NULL DEFAULT ''
" +
");
" +
"CREATE TABLE IF NOT EXISTS T_Employee (
" +
"'id' INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
" + "'name' TEXT NOT NULL,
" + "'age' INTEGER NOT NULL,
" + "'department_id' INTEGER,
" + "CONSTRAINT 'FK_DEP_ID' FOREIGN KEY ('department_id') REFERENCES 'T_Department' ('id')
" + ");" // return execSql(sql) }
INSERT, UPDATE, DELETE 문 실행
/// INSERT、UPDATE、DELETE SQL
///
/// :param: sql SQL
///
/// :returns:
func execSql(sql: String) -> Bool
{
//
return sqlite3_exec(db, sql.cStringUsingEncoding(NSUTF8StringEncoding)!, nil, nil, nil) == ITE_OK
}
실행 SQL 문 반환 결과 수
/// SQL
///
/// :param: sql SQL
///
/// :returns:
func execCount(sql: String) -> Int
{
let record = execRecordSet(sql)
//
return (record[0] as! [AnyObject])[0] as! Int
}
실행 반환 단일 레코드
///
///
/// :param: sql SQL
///
/// :returns:
func execRow(sql: String) -> [AnyObject]?
{
let record = execRecordSet(sql)
if record.count > 0
{
return (record[0] as! [AnyObject])
}
else
{
return nil
}
}
SQL 반환 결과 집합 실행
/// SQL
///
/// :param: sql SQL
///
/// :returns:
func execRecordSet(sql: String) -> [AnyObject]
{
var stmt: COpaquePointer = nil
var recordList = [AnyObject]()
if sqlite3_prepare_v2(db, sql.cStringUsingEncoding(NSUTF8StringEncoding)!, -1, &stmt, nil) == TE_OK
{
while sqlite3_step(stmt) == SQLITE_ROW
{
recordList.append(singleData(stmt)!)
}
}
//
sqlite3_finalize(stmt)
//
return recordList
}
한 줄 데이터 실행하기
///
///
/// :param: stmt
///
/// :returns:
func singleData(stmt: COpaquePointer) -> [AnyObject]?
{
var result = [AnyObject]()
//
let count = sqlite3_column_count(stmt)
// #define SQLITE_INTEGER 1
// #define SQLITE_FLOAT 2
// #define SQLITE_BLOB 4
// #define SQLITE_NULL 5
// #ifdef SQLITE_TEXT
// # undef SQLITE_TEXT
// #else
// # define SQLITE_TEXT 3
// #endif
// #define SQLITE3_TEXT 3
for index in 0..<count
{
let type = sqlite3_column_type(stmt, index)
// ,
switch type {
case SQLITE_INTEGER:
result.append(Int(sqlite3_column_int64(stmt, index)))
case SQLITE_FLOAT:
result.append(sqlite3_column_double(stmt, index))
case SQLITE_NULL:
result.append(NSNull())
case SQLITE_TEXT:
let rrrrr: UnsafePointer<UInt8> = sqlite3_column_text(stmt, index)
let chars = UnsafePointer<CChar>(sqlite3_column_text(stmt, index))
let str = String(CString: chars, encoding: NSUTF8StringEncoding)!
result.append(str)
case let type:
println(" \(type)")
}
}
//
return result
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
트리거로 재고 관리 for SQLite3SQLite3 트리거를 사용하여 인벤토리 증감 로직 만들기 SQLite 버전 3.35.5. DB Browser for SQLite, 버전 3.12.2 에서 시도했습니다. 트리거 사양 전표 데이터가 추가되면 상품 테이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.