专注于数据库与信息检索技术![sql9.com]

sqlite3 jdbc、c接口、python接口处理中文时遇到的问题及其解决方法

sqlite(版本3),以下简称sqlite3,目前功能已经非常强大。目前支持的字符集,包括UTF-8, UTF-16,UTF-16le,UTF-16be。可是在我们直接使用gbk编码的时候,很可能就会遇到问题。因为目前,很多人会使用c/c++接口来访问sqlite3数据库,当然,也有人使用python接口来访问它。1. 使用python时,要想正确的取到c++接口insert/update以后的数据,需要设定Connection的text_factory值为str,意思是直接使用原来存储时的encoding形式。con=sqlite3.connect(r"e:/t/testsqlite3.db")con.text_factory=str2. 使用sqlite jdbc访问的时候,如果想正确
发布时间:2012-03-28 | 类别:MySQL|Others | 阅读:2211 | 评论:0 | 标签:SQLite python UTF8

python用法:处理sqlite中的中文字符时遇到的问题

作为初学才,学起python,是挺快,但是也不免常常出些小错。在访问sqlite3的时候,我写了下边的测试代码。文件test.py是utf-8编码的,OK,结果没问题。#!/usr/bin/env python#coding=utf-8import sqlite3#con=sqlite3.connect(r"sqlite.db")con=sqlite3.connect(r"e: estsqlite3.db")#con.text_factory=strcur = con.cursor()#cur.execute("insert into basvslvoy (vslcode,voyage,vsl
发布时间:2012-03-28 | 类别:综合技术 | 阅读:2270 | 评论:0 | 标签:SQLite python

SQLite指南(2) -- 帮助及编译SQLite

关于SQLite的帮助,直接上http://www.sqlite.org/docs.html看即可。但是它不是单个文件形式的,唯一的好处就是更新比较及时。如果你想看单个chm文件的,可以从我这里下载单个chm文件:http://download.csdn.net/detail/iihero/2890372至于编译SQLite,如果只是出于学习的目的,完全可以只在windows下编译。我甚至还为此写了一个自动下载并编译的脚本,参看:http://iihero.iteye.com/blog/1175595脚本里边的wget.exe, 7z.dll, 7z.exe。前者来源于http://gnuwin32.sourceforge.net/packages/wget.htm后者来源于7zip,从中提取即可。你会发现开源
发布时间:2012-03-25 | 类别:MySQL|Others | 阅读:1265 | 评论:0 | 标签:SQLite

SQLite指南(1) -- SQLite的特性

使用SQLite也有一段时日了,一直想整理出一份比较完整的SQLite指南,可惜时间总是不够。就从这里开始吧,能写多少就写多少。总特性:1. SQLite支持事务,满足(ACID)特性:atomic, consistent, isolated, durable。即使在系统crash掉或者掉电的情况下,一样可以恢复。2. 0配置,不需要安装或者初始化管理即可使用。(不就是嵌入式应用吗?:))3. 整个数据库存储在跨平台的磁盘文件里头,何谓跨平台,就是说这个文件放到任意平台上,都可以用相同版本的SQLite打开(这个确实强大,目前,即算商用的大型DBMS,其数据文件也没几个是跨平台的,越大越难调头啊...)4. 支持TB和GB大小的字符串和大对象(BLOB) (写还可以,读呢,只能分片读出来吧....)5. 常规操
发布时间:2012-03-25 | 类别:MySQL|Others | 阅读:1702 | 评论:0 | 标签:SQLite

SQLite指南(3) - 5分钟了解熟悉SQLite

在没有大量阅读SQLite在线文档并且不了解相关配置之前,几分钟的时间可以让你快速了解SQLite.1. 下载源代码,你总能从http://www.sqlite.org/download.html 这里下载到最新的SQLite发行版本对应的源码。2. 创建数据库你可以从http://www.sqlite.org/download.html这里下载到sqlite3.exe,也可以直接依据下文:http://iihero.iteye.com/blog/1175595,自己动手编译出该可执行文件。进到cmd窗口,进到sqlite3所在目录,执行sqlite3 <demo.db全路径>,即可为你创建一个数据库文件。如果是sqlite3 demo.db,则会在当前目录为你创建该数据库。Java代码  
发布时间:2012-03-25 | 类别:MySQL|Others | 阅读:1795 | 评论:0 | 标签:SQLite

SQLite指南(4) - FAQ列表(important) 编辑

如若转载,请加上本文链接,以示尊重个人劳动,谢谢。本文严格整理自最新的:http://www.sqlite.org/faq.html, (3.7.8) (多说一句,看一个系统的发布,经常首先要看的就是,readme, 新特性,然后就是FAQ列表, 即所谓的常见问题列表)1. 如何创建一个自增字段(autoincrement)?在sqlite中,创建一个integer primary key,即可让它自增,太变态了。创建了该类型字段以后,即算你插入NULL值,NULL也会自动转为最后一次插入的值+1。最大可能的整数值为9223372036854775807,越过此值后,将会随机生成一个值。sqlite> create table t1(a integer primary key, b integer);sq
发布时间:2012-03-25 | 类别:MySQL|Others | 阅读:3477 | 评论:0 | 标签:SQLite

SQLite指南(5) - PRAGMA命令用法(完整)

如若转载,请加上本文链接,以示尊重个人劳动,谢谢。 PRAGMA语句是SQLITE数据的SQL扩展,是它独有的特性,主要用于修改SQLITE库或者内数据查询的操作。它采用与SELECT、INSERT等语句一样的形式来发出请求,但也有几个重要的不同:1. 特定的PRAGMA语句可能被移走,新的PRAGMA语句可能在新的版本中添加。因此,后向兼容无法保证。2. 未知的PRAGMA命令不会有错误消息出现,它只是简单的忽略。3. 有些PRAGMA只在SQL的编译阶段起作用,而不是执行阶段。 这意味着如果使用C语言,sqlite3_prepare(), sqlite3_step(), sqlite3_finalize()这几个API,pragma命令可能只在prepare()的调用里运行,而不是在后两个API当中执行。或
发布时间:2012-03-25 | 类别:MySQL|Others | 阅读:1623 | 评论:0 | 标签:SQLite

SQLite中重复值的插入

sqlite> create table t(id integer primary key autoincrement, col2 varchar(32));  sqlite> insert into t values((select (max(rowid) % 8192 + 1) from t), 'fdasfaf');  sqlite> select * from t;  1|fdas
发布时间:2012-03-25 | 类别:MySQL|Others | 阅读:2423 | 评论:0 | 标签:SQLite

SQLite指南(0) 表和索引的文件存储结构 编辑

SQLite采用的是B+树来存储表中的索引和数据。B树的键及其值既存储在内部节点上,也存储在叶节点上,所有的叶节点具有相同的深度。B+树作了些微改变,键和数据会存储到叶节点上,并且按照键值排好序。而内部节点只存储键值。相当于有两条查找路径。SQLite从根叶开始创建B+树,一般从页1开始。它以独立的页来存储树节点,每页一个节点,这些页要分内部页还是叶子页。对于每个节点,任何项(数据)及其键值组合成一个payload, 每页都会预设一个payload值,当实际的payload超过此值时,超出的字节就会填充到溢出页,多余的payload会依次存储到溢出页形成的链表里。内部页和叶子页都可以有溢出页。SQLite的页结构:SQLite数据库文件是由固定大小的页组成的。 也就是说该文件大小肯定是页大小的整数倍。其中的B+
发布时间:2012-03-25 | 类别:MySQL|Others | 阅读:1703 | 评论:0 | 标签:SQLite

SQLite指南(6)-处理database is locked的方法

解决方法有:1。使用进程或线程间的同步机制以避免同时操作;如用信号量,互斥锁等(pthread_mutex_lock,pthread_mutex_unlock),如果你的项目工程较大要求较高的话建议用此方法自行封装函数处理同步2。使用sqlite提供的两个busy handler函数,但对于一个连接来说,只能有一个busy handle,两个函数会相互影响,设置一个的同时会清除另一个,应根据需要来选择。int sqlite3_busy_handler(sqlite3 *, int (*)(void *, int), void *)不注册此函数时默认回调函数为NULL,清除busy handle,申请不到锁直接返回;函数可以定义一个回调函数,当出现数据库忙时sqlite会调用该函数进行延时并返回非0会重试本次操作
发布时间:2012-03-25 | 类别:MySQL|Others | 阅读:1795 | 评论:0 | 标签:SQLite

公告

欢迎光临本站, SQL9.com,联系方式:
Tel:

欢迎使用SQL6生活搜索[由iihero labs提供]
天气|IP|身份证搜索|邮编|电话区号|JSON格式化

标签云