如何从 sqlite.swift 使用3 db 与检索一个字符串字段swift

如何从 sqlite3 db 与检索一个字符串字段swift
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.
我在读一张桌子从 sqlite3 数据库。我设法读 int 字段 (在我的代码示例中的 iEventYear),但我不知道如何从 sqlite 数据库中读取一个字符串字段。
我想使用任何额外的库或框架,但纯的包括的 sqlite3.h 如果可能的话。
这里是我的代码,来证明我的问题:
let sql = "SELECT year,title FROM historyevents";
var statement:COpaquePointer = nil
//var tail: CString = ""
if sqlite3_prepare_v2(db, sql, -1, &statement, nil) != SQLITE_OK {
println("Failed to prepare statement")
while sqlite3_step(statement) == SQLITE_ROW {
var iEventYear:Int16 = Int16(sqlite3_column_int(statement, 0));
//Howto retrieve a string ?
var sEventTitle:String = String(sqlite3_column_xxxxxx(statement, 1));
println(count);
println("query ok.");
解决方法 1:
你应该能够检索一个字符串以这种方式。
let sEventTitle = String.fromCString(UnsafePointer&CChar&(sqlite3_column_text(statement, 1)))
然而我的建议是使用 SQLite 的包装,最著名之一是,它是在objective-c (显然工作也在 Swift ),但如果你想喝点完全在 Swift ,你可以看看当前位置:
& Swift - 操作SQLite数据库(引用SQLite3库)
Swift - 操作SQLite数据库(引用SQLite3库)
发布:hangge
浏览:6587
SQLite轻量级数据库在移动应用中使用非常普遍,但是目前的库是C编写的,为了方便使用,对SQLite相关的操作用Swift进行了封装。这个封装代码使用了一个开源项目SQLiteDB,地址是:
重要事项(日):SQLiteBD原作者最后只更新到Swift1.2便停止,说后面不会再更新了,如果使用Xcode7便会报错。我这里在其基础上进行了修改,使其支持Swift2.0。
重要事项(日):SQLiteBD原作者又继续更新了,现在已经完美支持Swift2.0。所以大家可以直接使用,本文使用样例也已同步更新。
下面通过一个样例展示SQlite数据库连接,创建表,查询数据,插入数据等操作。&
1,当输入用户名和手机号,点击保存即可将数据存入数据库&
2,下次启动,自动从数据库中载入初始化信息
操作步骤:
1,在Build Phases -& Link Binary With Libraries中点击加号,添加libsqlite3.0.tdb到项目中来
2,创建连接头文件Bridging-Header.h
#import "sqlite3.h"
#import &time.h&
3,在项目编译属性里引用头文件
4,导入SQLiteDB的代码(SQLiteDB.swift、SQLTable.swift和String-Extras.swift),代码结构如下:
5,ViewController.swift代码
import UIKit
class ViewController: UIViewController {
var db:SQLiteDB!
@IBOutlet var txtUname: UITextField!
@IBOutlet var txtMobile: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
//获取数据库实例
db = SQLiteDB.sharedInstance()
//如果表还不存在则创建表(其中uid为自增主键)
db.execute("create table if not exists t_user(uid integer primary key,uname varchar(20),mobile varchar(20))")
//如果有数据则加载
initUser()
//点击保存
@IBAction func saveClicked(sender: AnyObject) {
saveUser()
//从SQLite加载数据
func initUser() {
let data = db.query("select * from t_user")
if data.count & 0 {
//获取最后一行数据显示
let user = data[data.count - 1]
txtUname.text = user["uname"] as? String
txtMobile.text = user["mobile"] as? String
//保存数据到SQLite
func saveUser() {
let uname = self.txtUname.text!
let mobile = self.txtMobile.text!
//插入数据库,这里用到了esc字符编码函数,其实是调用bridge.m实现的
let sql = "insert into t_user(uname,mobile) values('\(uname)','\(mobile)')"
print("sql: \(sql)")
//通过封装的方法执行sql
let result = db.execute(sql)
print(result)
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
老代码下载(只支持Swift1.2):
老代码下载(个人修改的支持Swift2.0):
最新代码下载:您所在的位置: &
MySQL字符串连接函数用法简介
MySQL字符串连接函数用法简介
MySQL中有很多功能强大的函数,字符串连接函数就是其中之一,下文对该函数的用法作了详尽的阐述,如果您感兴趣的话,不妨一看。
MySQL字符串连接函数是我们很常用的函数,下面就为您详细介绍字符串连接函数的用法,希望可以让您对MySQL字符串连接函数有更多的了解。
使用方法:
CONCAT(str1,str2,&)&
返回结果为连接参数产生的字符串。如有任何一个参数为NULL ,则返回值为 NULL。
如果所有参数均为非二进制字符串,则结果为非二进制字符串。
如果自变量中含有任一二进制字符串,则结果为一个二进制字符串。
一个数字参数被转化为与之相等的二进制字符串格式;若要避免这种情况,可使用显式类型 cast, 例如:
SELECT CONCAT(CAST(int_col AS CHAR), char_col)
MySQL的concat函数可以连接一个或者多个字符串,如
mysql&select&concat('10'); &+--------------+ &|&concat('10')&| &+--------------+ &|&10&&&| &+--------------+ &1&row&in&set&(0.00&sec) &&mysql&select&concat('11','22','33'); &+------------------------+ &|&concat('11','22','33')&| &+------------------------+ &|&112233&| &+------------------------+ &1&row&in&set&(0.00&sec) &&
MySQL的concat函数在连接字符串的时候,只要其中一个是NULL,那么将返回NULL
mysql&select&concat('11','22',null); &+------------------------+ &|&concat('11','22',null)&| &+------------------------+ &|&NULL&&&| &+------------------------+ &1&row&in&set&(0.00&sec) &
MySQL中concat_ws函数
使用方法:
CONCAT_WS(separator,str1,str2,...)
CONCAT_WS() 代表 CONCAT With Separator ,是CONCAT()的特殊形式。第一个参数是其它参数的分隔符。分隔符的位置放在要连接的两个字符串之间。分隔符可以是一个字符串,也可以是其它参数。
如果分隔符为 NULL,则结果为 NULL。函数会忽略任何分隔符参数后的 NULL 值。
如连接后以逗号分隔
mysql&select&concat_ws(',','11','22','33'); &&+-------------------------------+ &|&concat_ws(',','11','22','33')&| &+-------------------------------+ &|&11,22,33&| &+-------------------------------+ &1&row&in&set&(0.00&sec) &&
和MySQL中concat函数不同的是, concat_ws函数在执行的时候,不会因为NULL值而返回NULL
mysql&select&concat_ws(',','11','22',NULL); &+-------------------------------+ &|&concat_ws(',','11','22',NULL)&| &+-------------------------------+ &|&11,22&| &+-------------------------------+ &1&row&in&set&(0.00&sec) &
【编辑推荐】
【责任编辑: TEL:(010)】
关于的更多文章
MariaDB是一个向后兼容、替代MySQL的数据库服务器。它包含所有主
数据库产品
数据库综合
数据库新闻
维基百科将切换到另外一款开源数据库MariaDB
不管你有没有准备好,新版SQL Server来了!代号为Dena
也许你不需要了解SQL Server的内部机制,你照样能完成
本专题与大家共同讨论与分享ORACLE SQL的一些常用经典
本书从基础知识入手,详细讨论了Oracle数据库的创建、OEM及iSQL*Plus等工具的使用、Oracle的字符集知识、用户的创建与管理、表空
51CTO旗下网站标题: 签名: 认真关注一件事很难~所以你不成功!截止抓取时间: 717 | 积分:6188 | 排名: | 原创: 248 | 转载: 87 | 译文: 12 | 评论: 160 | 访问量: 311823
此博客下共有: 345 篇文章.
序号标题序号标题
标题: 签名: 事虽微,不为不成;道虽迩,不行不至截止抓取时间: 841 | 积分:13918 | 排名: | 原创: 383 | 转载: 84 | 译文: 8 | 评论: 819 | 访问量: 614608
此博客下共有: 472 篇文章.
序号标题序号标题
标题: 签名: 踏得网:全球视野的互联网新技术(ex:HTML5)搜索和分享引擎截止抓取时间: 034 | 积分:16563 | 排名: | 原创: 403 | 转载: 56 | 译文: 83 | 评论: 356 | 访问量: 1229297
此博客下共有: 539 篇文章.
序号标题序号标题
标题: 签名: 有困难要上,没有困难创造困难也要上!截止抓取时间: 232 | 积分:11849 | 排名: | 原创: 295 | 转载: 29 | 译文: 0 | 评论: 287 | 访问量: 899493
此博客下共有: 322 篇文章.
序号标题序号标题
标题: 签名: C++, Linux系统与编程, TCP/IP, 数据结构与算法, Hadoop与云计算截止抓取时间: 358 | 积分:9329 | 排名: | 原创: 333 | 转载: 50 | 译文: 2 | 评论: 552 | 访问量: 355266
此博客下共有: 383 篇文章.
序号标题序号标题
标题: 签名: Programming for your glory截止抓取时间: 531 | 积分:8104 | 排名: | 原创: 432 | 转载: 88 | 译文: 1 | 评论: 86 | 访问量: 324452
此博客下共有: 519 篇文章.
序号标题序号标题
标题: 签名: 只有技术才能亲近技术本身截止抓取时间: 740 | 积分:6647 | 排名: | 原创: 141 | 转载: 19 | 译文: 0 | 评论: 352 | 访问量: 344795
此博客下共有: 158 篇文章.
序号标题序号标题
标题: 签名: 知及之,仁不能守之,虽得之,必失之。截止抓取时间: 850 | 积分:11235 | 排名: | 原创: 510 | 转载: 0 | 译文: 0 | 评论: 81 | 访问量: 409257
此博客下共有: 509 篇文章.
序号标题序号标题
标题: 签名: 敏捷开发及移动和物联设备研究:iOS、Android、Html5、Arduino、pcDuino截止抓取时间: 116 | 积分:5553 | 排名: | 原创: 227 | 转载: 222 | 译文: 99 | 评论: 56 | 访问量: 211262
此博客下共有: 547 篇文章.
序号标题序号标题
标题: 签名: 欢迎访问我的个人官网:截止抓取时间: 357 | 积分:15449 | 排名: | 原创: 622 | 转载: 14 | 译文: 0 | 评论: 2420 | 访问量: 604548
此博客下共有: 657 篇文章.
序号标题序号标题
标题: 签名: 雕像重生截止抓取时间: 625 | 积分:5576 | 排名: | 原创: 334 | 转载: 3 | 译文: 56 | 评论: 37 | 访问量: 177617
此博客下共有: 405 篇文章.
序号标题序号标题
标题: 签名: Die Luft der Freiheit weht 自由之风永远吹拂.截止抓取时间: 821 | 积分:5804 | 排名: | 原创: 435 | 转载: 27 | 译文: 27 | 评论: 30 | 访问量: 128715
此博客下共有: 492 篇文章.
序号标题序号标题

我要回帖

更多关于 sqlite.swift 使用 的文章

 

随机推荐