html5 sqlite位置可不可以自定义

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了html5 sqlite位置可不可以自定义相关的知识,希望对你有一定的参考价值。

参考技术A 指定sqlite的创建位置

=================
要在android系统中操作SQLite数据库,是通过Android的核心类SQLiteDatabase类来实现的,通常情况下为了数据库升级的需要以及使用方便,我们会选择继承SQLiteOpenHelper抽像类,但是SQLiteOpenHelper会将数据库文件创建在一个固定的目录(内存的/data/data/<package name/databases>目录中),如果你想使用已经存在的数据库文件也就是说数据库会和程序一起发布,就得通过使用SQLiteDabase的静态方法OpenOrCreateDatabase()方法来得到SQLiteDabase对象,下面是一个具体操作类:
package net.my.dao;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import net.my.jokebook.R;
import android.app.Activity;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
public class DBHelper
//得到SD卡路径
private final String DATABASE_PATH = android.os.Environment
.getExternalStorageDirectory().getAbsolutePath()
+ "/joke";
private final Activity activity;
//数据库名
private final String DATABASE_FILENAME;
public DBHelper(Context context)
// TODO Auto-generated constructor stub
//这里直接给数据库名
DATABASE_FILENAME = "jokebook.db3";
activity = (Activity)context;

//得到操作数据库的对象
public SQLiteDatabase openDatabase()

try

boolean b = false;
//得到数据库的完整路径名
String databaseFilename = DATABASE_PATH + "/" + DATABASE_FILENAME;
//将数据库文件从资源文件放到合适地方(资源文件也就是数据库文件放在项目的res下的raw目录中)
//将数据库文件复制到SD卡中 File dir = new File(DATABASE_PATH);
if (!dir.exists())
b = dir.mkdir();
//判断是否存在该文件
if (!(new File(databaseFilename)).exists())

//不存在得到数据库输入流对象
InputStream is = activity.getResources().openRawResource(
R.raw.jokebook);
//创建输出流
FileOutputStream fos = new FileOutputStream(databaseFilename);
//将数据输出
byte[] buffer = new byte[8192];
int count = 0;
while ((count = is.read(buffer)) > 0)

fos.write(buffer, 0, count);

//关闭资源
fos.close();
is.close();

//得到SQLDatabase对象
SQLiteDatabase database = SQLiteDatabase.openOrCreateDatabase(
databaseFilename, null);
return database;

catch (Exception e)

System.out.println(e.getMessage());

return null;


写完这个类之后,就能得到SQLiteDatabase对象,就能对数据库操作了本回答被提问者和网友采纳

如何在SQLite中添加自己的PRAGMA语句来存储自定义元数据?

我想在不创建新表的情况下,将作者姓名、版权、来源等元数据存储到我的SQLite DB中。我发现我们可以使用PRAGMA语句来设置一些值。我想存储我自己的自定义名称和值 ... 如何创建自定义PRAGMA语句?http:/www.sqlite.orgpragma.html

有人做过这个吗? 文档中说...

"SQLite的C语言API提供了SQLITE_FCNTL_PRAGMA文件控件,它使VFS实现有机会添加新的PRAGMA语句或覆盖内置PRAGMA语句的含义。"

请告诉我如何才能实现?

答案

内置的PRAGMA在数据库中存储自己的值,是在 数据库头.

没有足够的空间来添加自定义值。

你别无选择,只能创建一个新表。

另一答案

不知道这对你来说是否足够,但我使用了 user_version 来跟踪最后一次模式检查。

我所做的是保存它最后一次与代码模式检查的时间戳。如果已经过了24小时,或者5米,或者其他什么,我就重新检查并更新东西。我只需要1个32b的int就可以了,所以很完美。如果你需要更多,这不是它。

更多信息 user_version 此处(PRAGMA schema_version)此处

另一答案

看看新的 校验和 VFS Shim 的例子,以了解VFS添加自定义pragma的情况。

源代码在上面的页面上有链接,但是...。又来了,以备不时之需。

但当然,你不能存储额外的信息,除非通过表。因此,虽然上面确实展示了如何实现自定义pragma,但你的实际最终目标是不可能实现的,因为表头是固定的,是为SQLite本身保留的。如果你有一个表,那为什么还要有一个pragma呢?

以上是关于html5 sqlite位置可不可以自定义的主要内容,如果未能解决你的问题,请参考以下文章

带有 Mono 的自定义函数 SQLite

在 html5 中自定义 navigator.geolocation 栏

关于HTML5如何自定义属性

如何使用HTML5+CSS3+jquery 实现用户拖拽自定义界面

HTML5 data-* 自定义属性

SQLite 自定义函数,聚合,排序规则