sqlite 32位和64位数据库语句识别的区别
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sqlite 32位和64位数据库语句识别的区别相关的知识,希望对你有一定的参考价值。
项目中用到了sqlite数据库,在32位Win7系统下运行良好,但是放到64为系统上执行到调用sqlite那段代码时程序报错了。通过分析发现sqlite对应不同的操作系统有不同的版本,也就是说在64为操作系统上要运行64位的sqlite。
那程序要兼容32位和64位系统怎么办呢?
首先想到的办法是判断当前的操作系统,如果是32位就加载32位的sqlite否则加载64位的sqlite。
但是这个办法过于麻烦,有没有简单一点的方法呢?
在IDE中,如:VS2008中将项目的目标平台改为x86即可,这时程序即可兼容64位操作系统了。 参考技术A SQLite官方最新的ado.net provider是同时支持x86和x64方式的(nuget上的System.Data.SQLite或者System.Data.SQLite.Core),这里面的System.Data.SQLite.dll是Any CPU的,所以你的ABC.DLL也不需要分两种了,一样使用Any CPU方式就能同时支持两种环境了。
如果使用上面的nuget包,它会自动在编译的时候copy依赖的两种SQLite.Interop.dll到bin目录。
运行时System.Data.SQLite.dll默认会根据环境自动选择合适的SQLite.Interop.dll加载。
Android--SQLite应用
下载地址:http://www.sqlite.org/download.html
教程地址:http://www.runoob.com/sqlite/sqlite-tutorial.html
1、在Windows安装SQLite,进行测试。
参考博客:Windows 上如何安装Sqlite
将sqlite3.def、sqlite3.dll与sqlite3.exe复制到D:\\sqlite
在CMD命令行中创建数据库,如图方法:
参考博客:SQLite3创建数据库的方法
SQLite语句测试,如下图:
SQLite分页查询方法
order by 与 limit同用注意事项
参考博客:
同时使用order by和limit有时候返回错误的结果集的奇怪问题
http://bbs.chinaunix.net/thread-1276235-1-1.html
(出处: http://bbs.chinaunix.net/)
2、Android 使用API
参考博客: Android中SQLite应用详解
注:必须添加SD卡创建与删除文件权限
<!-- 在SDCard中创建与删除文件权限 --> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/> <!-- 向SD卡写入数据权限 --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.CLEAR_APP_CACHE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" />
初始化数据库表代码:
/** * 初始化数据库表 */ private void InitTable(){ db = openOrCreateDatabase("db.db", Context.MODE_PRIVATE, null); Cursor cursor = db.rawQuery(SqlStatement.getInitStr(),null); boolean result = false; if(cursor.moveToNext()){ int count = cursor.getInt(0); if(count>0){ result = true; } } cursor.close(); if(!result){//如果错误,创建表 db.execSQL(SqlStatement.getCreateStr()); } }
java字符串格式化
参考博客: JAVA字符串格式化-String.format()的使用
String.xml中的字符串不能含有 ‘
SQLite查询数据方法,如下:
String limit = String.valueOf(this.mPageSize); String sql =SqlStatement.getSearchStr(goods,limit,offset); Cursor cursor = db.rawQuery(sql,null); this.mDataList = new ArrayList<DataItem>();//初始化列表 while(cursor.moveToNext()){ int id = cursor.getInt(cursor.getColumnIndex("ID")); String itemName = cursor.getString(cursor.getColumnIndex("Goods")); String price = cursor.getString(cursor.getColumnIndex("Price")); DataItem item = new DataItem(id,itemName, price); this.mDataList.add(item); } cursor.close();
以上是关于sqlite 32位和64位数据库语句识别的区别的主要内容,如果未能解决你的问题,请参考以下文章