重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
目前是2 m大小。
站在用户的角度思考问题,与客户深入沟通,找到临潼网站设计与临潼网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站设计、做网站、企业官网、英文网站、手机端网站、网站推广、域名申请、虚拟主机、企业邮箱。业务覆盖临潼地区。
希望我的回答可以帮到你,有什么不懂可以追问。
SQLiteOpenHelper(frameworks/base/core/java/android/database/sqlite /SQLiteOpenHelper.java)这个类中,创建数据库文件的路径是使用传入的contex的getDatabasePath获取的,这个 是不允许修改的(至少我没有找到)。
那我就仿照这个SQLiteOpenHelper写了一个abstract class SDSQLiteOpenHelper,其使用和SQLiteOpenHelper一样,然后只要加上相应的permission,这样就可以实现把数据库存储到sdcard上了。
尝试着研究了下Html5访问本地数据库,感觉还不错,用的是chome浏览器,sqlite数据库。
xp系统默认的数据库存放路径C:\Documents and Settings\Administrator\Local Settings\Application Data\Google\Chrome\User Data\Default\databases\
具体的数据库文件要动手找,用SQLitespy可以打开数据库
示例代码:
html manifest="mymanifest.manifest"
head
meta http-equiv="Content-Type" content="text/html; content="no-cache" charset=utf-8" /
script type="text/javascript" src="jquery-1.7.2.min.js"/script
script
$(document).ready(function(){
databaseTest();
});
function databaseTest(){
//open database
var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024);
db.transaction(function (tx) {
tx.executeSql('CREATE TABLE IF NOT EXISTS testHtml (id unique, contentText)');
tx.executeSql('INSERT INTO testHtml (contentText) VALUES ("insert data test1!")');
// tx.executeSql('delete from testHtml');
});
db.transaction(function(tx){
tx.executeSql('SELECT * FROM testHtml',[],function(tx,result){
var len=result.rows.length;
var msg = "pFound rows: " + len + "/p";
$("#testinfo").append(msg);
for(var i = 0; i len ; i++){
var str=result.rows.item(i);
$("#testvalue").append(str.contentText);
}
},null);
});
}
/script
/head
body
divhere is test info:/div
div id="testinfo"/div
divhere is test value:/div
div id="testvalue"/div
/body
如果用的Chrome浏览器
那么SQLite数据库就安装到了$CHROME_HOME\User Data\Default\databases中
这个目录中databases.db是当前用户的所有创建的数据库的配置,而file__0目录则是数据库表文件
其他浏览器也应该差不多
。所谓html5是作为一种标准。而最终实现是需要浏览器内核支持。无论是显示还是数据库链接 和 浏览器内核有关。然后。html5 是支持SQLite的连接的。需要使用js的数据库操作的一套api。chrome应该是比较好支持的
指定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对象,就能对数据库操作了