- 浏览: 161635 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
yzd_java:
你的uploadFile.html怎么没有贴出来
uploadify 3.2.1+spring mvc上传文件 -
u013107014:
不能多选,不能阅览,搞J8
uploadify 3.2.1+spring mvc上传文件 -
u013107014:
什么JB鬼?
uploadify 3.2.1+spring mvc上传文件 -
11104078:
uploadify 3.2.1+spring mvc上传文件 -
xujun738:
楼主,为什么我按照你说的做,只生成了一级,点展开树结点的时候就 ...
zk生成多级树
今天做项目的时候为了测试我把模拟器里的项目删除了,然后重新运行项目报
我在网上求助,多亏好友郑方提醒rollback然后我同事又帮我看了下,这时我才想起上次我在创建表的方法里把数据库给关了
public class CourseDAO extends SQLiteOpenHelper{
private final static String DATABASE_NAME="course_db";
private final static int DATABASE_VERSION=1;
private final static String TABLE_NAME1="course_table";
public final static String COURSE_ID="_id";
public final static String COURSE_NAME="course_name";
public final static String COURSE_TEACHER="course_teacher";
public final static String COURSE_DATE="course_time";
public final static String COURSE_ADDRESS="course_address";
public final static String COURSE_NUMBER="course_number";
private SQLiteDatabase db;
public String CREATE_TABLE_SQL ="CREATE TABLE "+ TABLE_NAME1 +"("+ COURSE_ID
+" INTEGER primary key autoincrement," + " "
+ COURSE_NAME + " text ," + " "+ COURSE_TEACHER + " text," + " "+ COURSE_DATE + " text" +
"," + " "+ COURSE_ADDRESS + " text," + " "+ COURSE_NUMBER + " text)";
public CourseDAO(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase db) {
String courseTable = "CREATE TABLE "+ TABLE_NAME1 +"("+ COURSE_ID
+" INTEGER primary key autoincrement," + " "
+ COURSE_NAME + " text ," + " "+ COURSE_TEACHER + " text," + " "+ COURSE_DATE + " text" +
"," + " "+ COURSE_ADDRESS + " text," + " "+ COURSE_NUMBER + " text)";
db.execSQL(courseTable);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS course_table");
onCreate(db);
}
/*根据星期查询*/
public Cursor queryByWeek(String week)
{
SQLiteDatabase dbDatabase = getReadableDatabase();
Cursor cursor =dbDatabase.query(TABLE_NAME1,
new String[]{COURSE_ID,
COURSE_NAME,
COURSE_TEACHER,
COURSE_DATE,
COURSE_ADDRESS,
COURSE_NUMBER},
"course_table.course_time="+"'"+week+"'", null, null, null, "course_table.course_number asc");
return cursor;
}
/*根据Id查询*/
public Cursor queryByInfoIdCursor(int infoId)
{
SQLiteDatabase dbDatabase = getReadableDatabase();
Cursor cursor =dbDatabase.query(TABLE_NAME1,new String[]{COURSE_ID,COURSE_TEACHER,COURSE_ADDRESS}, "course_table._id="+infoId, null, null, null, null);
return cursor;
}
/*根据Id查询*/
public Cursor queryByInfoId(int infoId)
{
SQLiteDatabase dbDatabase = getReadableDatabase();
Cursor cursor =dbDatabase.query(TABLE_NAME1,new String[]{COURSE_NAME,COURSE_NUMBER,COURSE_TEACHER,COURSE_ADDRESS}, "course_table._id="+infoId, null, null, null, null);
return cursor;
}
/*根据上课时间和上课节次查询*/
public Cursor queryByTimeAndNumber(String time,String number)
{
SQLiteDatabase db = getWritableDatabase();
String sql="select p._id,p.course_name" +
" from course_table as p where p.course_time="+"'"+time+"'" +"and p.course_number="+"'"+number+"'" ;
Cursor cursor=db.rawQuery(sql, null);
return cursor;
}
/*插入课程信息*/
public long course_insert(String name,String teacher,String date,String address,String number){
SQLiteDatabase dbDatabase=getWritableDatabase();
ContentValues cValues=new ContentValues();
cValues.put(COURSE_NAME, name);
cValues.put(COURSE_TEACHER,teacher);
cValues.put(COURSE_DATE,date);
cValues.put(COURSE_ADDRESS,address);
cValues.put(COURSE_NUMBER,number);
long row=dbDatabase.insert(TABLE_NAME1, null, cValues);
//sub_insert((int)row, subGroup);
return row;
}
/*更改课程信息*/
public long course_update(int id,String name,String teacher,String date,String address,String number){
SQLiteDatabase dbDatabase=getWritableDatabase();
ContentValues cValues=new ContentValues();
cValues.put(COURSE_NAME, name);
cValues.put(COURSE_TEACHER,teacher);
cValues.put(COURSE_DATE,date);
cValues.put(COURSE_ADDRESS,address);
cValues.put(COURSE_NUMBER,number);
String where = COURSE_ID+"= ?";
String[] whereValue={Integer.toString(id)};
long row=dbDatabase.update(TABLE_NAME1, cValues,where ,whereValue);
//sub_insert((int)row, subGroup);
return row;
}
//删除课程信息
public void deleteCourse(int id)
{
SQLiteDatabase db = getWritableDatabase();
String where = COURSE_ID+ "= ?";
String[] whereValue={Integer.toString(id)};
db.delete(TABLE_NAME1, where, whereValue);
}
看一下SQLiteOpenHelper.java:170是不是有问题
一下午都解决不了,最后放弃了使用ContentProvider的方法,直接操作进行中!
看你的日志是说SQLiteOpenHelper的第170行有错,ContentProvider我也没用过,还真不太熟悉,共同努力吧
看一下SQLiteOpenHelper.java:170是不是有问题
一下午都解决不了,最后放弃了使用ContentProvider的方法,直接操作进行中!
看一下SQLiteOpenHelper.java:170是不是有问题
又奋斗了半天,还是没有头绪,SQLiteOpenHelper.java没有问题,我再考虑放弃使用ContentProvider了,非常非常感谢朋友的热心相助,如果我发现解决方案,肯定跟帖!
看一下SQLiteOpenHelper.java:170是不是有问题
你可以通过下面的命令查看你是否创建了表
在Linux下查看数据库文件
1.cmd>adb shell
2.cd data/data
3.ls查看文件
4.进入要查看数据库的项目名
5.ls
6.cd databases
7.ls
8.sqlite3 “数据库名”
9. .tables
你好,首先非常感谢你能够在百忙之中给予回复,我创建了表,在SQLite客户端也能够正常执行,我是在客户端创建的数据库和表,并插入了表数据,但我在运行写的android程序时却报这种错误,是不是还要有个步骤打开数据库啊,我ContentProvider写的也没问题。
在创建数据库类onCreate(SQLiteDatabase db)方法里你把数据库关闭了吗?
没有,我方法如下:
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE list(_id INTEGER PRIMARY KEY,"
+ "num TEXT," + "area TEXT," + "t TEXT);");
}
就没有了,没有关闭数据库的操作。希望能得到你的指点!
数据库版本:DATABASE_VERSION=1;
//数据库构造方法
public ToDoDB(Context context)
{
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
//创建数据库方法
public void onCreate(SQLiteDatabase db) {
/*创建表info*/
String infoSql="CREATE TABLE "+ TABLE_NAME1 +"("+ INFO_ID
+" INTEGER primary key autoincrement," + " "+ GROUP_TYPE +" text ," + " "
+ INFO_TITLE + " text ," + " "+ INFO_CONTENT + " text)";
db.execSQL(infoSql);
/*创建类别表*/
String groupSql="CREATE TABLE "+ TABLE_NAME2 +"("+ GROUP_ID
+" INTEGER primary key autoincrement, " + " "+ GROUP_TYPES +" text)";
db.execSQL(groupSql);
Cursor c1 = db.query("info_table", null, null,
null, null, null, null);
if(c1.getCount()>0)
{
if(db.isOpen())
db.close();
}
}
以上是我的创建数据库方法
如果还不行的话把你的日志信息发上来,咱们研究一下
首先我必须道谢,谢谢朋友的热情!
我们用的不一样的方法,我用的ContentProvider来实现的。
private static class DatabaseHelper extends SQLiteOpenHelper {
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE list(_id INTEGER PRIMARY KEY,"
+ "num TEXT," + "area TEXT," + "t TEXT);");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Log.w(TAG, "Upgrating database from version" + oldVersion + "to " +
newVersion + ",which will destory all old data");
db.execSQL("DROP TABLE IF EXISTS list");
onCreate(db);
}
}
我是这么写的。
DatabaseHelper 是内部类,外部类是AscriptionsProvider extends ContentProvider 有一些常量:
private static final String TAG = "AscriptionProvider";
private static final String DATABASE_NAME = "ascriptions.db";
private static final int DATABASE_VERSION = 1;
private static HashMap<String, String> ASCRIPTIONS_PROJECTION_MAP;
private static final int ASCRIPTIONS = 1;
private static final int ASCRIPTIONS_ID = 2;
private static final UriMatcher URL_MATCHER;
日志信息是:
10-12 03:13:38.199: ERROR/AndroidRuntime(31621): java.lang.RuntimeException: Unable to start activity ComponentInfo com.scu.sw.oeasy/com.scu.sw.oeasy.DialRecording}: android.database.sqlite.SQLiteException: Can't upgrade read-only database from version 0 to 1: /data/data/com.scu.sw.oeasy/databases/ascriptions.db
10-12 03:13:38.199: ERROR/AndroidRuntime(31621): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2268)
10-12 03:13:38.199: ERROR/AndroidRuntime(31621): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2284)
10-12 03:13:38.199: ERROR/AndroidRuntime(31621): at android.app.ActivityThread.access$1800(ActivityThread.java:112)
10-12 03:13:38.199: ERROR/AndroidRuntime(31621): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1692)
10-12 03:13:38.199: ERROR/AndroidRuntime(31621): at android.os.Handler.dispatchMessage(Handler.java:99)
10-12 03:13:38.199: ERROR/AndroidRuntime(31621): at android.os.Looper.loop(Looper.java:123)
10-12 03:13:38.199: ERROR/AndroidRuntime(31621): at android.app.ActivityThread.main(ActivityThread.java:3948)
10-12 03:13:38.199: ERROR/AndroidRuntime(31621): at java.lang.reflect.Method.invokeNative(Native Method)
10-12 03:13:38.199: ERROR/AndroidRuntime(31621): at java.lang.reflect.Method.invoke(Method.java:521)
10-12 03:13:38.199: ERROR/AndroidRuntime(31621): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:782)
10-12 03:13:38.199: ERROR/AndroidRuntime(31621): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:540)
10-12 03:13:38.199: ERROR/AndroidRuntime(31621): at dalvik.system.NativeStart.main(Native Method)
10-12 03:13:38.199: ERROR/AndroidRuntime(31621): Caused by: android.database.sqlite.SQLiteException: Can't upgrade read-only database from version 0 to 1: /data/data/com.scu.sw.oeasy/databases/ascriptions.db
10-12 03:13:38.199: ERROR/AndroidRuntime(31621): at android.database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:170)
10-12 03:13:38.199: ERROR/AndroidRuntime(31621): at com.scu.sw.oeasy.AscriptionsProvider.query(AscriptionsProvider.java:171)
10-12 03:13:38.199: ERROR/AndroidRuntime(31621): at android.content.ContentProvider$Transport.query(ContentProvider.java:129)
10-12 03:13:38.199: ERROR/AndroidRuntime(31621): at android.content.ContentResolver.query(ContentResolver.java:149)
10-12 03:13:38.199: ERROR/AndroidRuntime(31621): at com.scu.sw.oeasy.DialRecording.findNumberAscription(DialRecording.java:131)
10-12 03:13:38.199: ERROR/AndroidRuntime(31621): at com.scu.sw.oeasy.DialRecording.listDialRecord(DialRecording.java:114)
10-12 03:13:38.199: ERROR/AndroidRuntime(31621): at com.scu.sw.oeasy.DialRecording.onCreate(DialRecording.java:23)
10-12 03:13:38.199: ERROR/AndroidRuntime(31621): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1123)
10-12 03:13:38.199: ERROR/AndroidRuntime(31621): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2231)
10-12 03:13:38.199: ERROR/AndroidRuntime(31621): ... 11 more
先去吃饭吧,朋友!
你可以通过下面的命令查看你是否创建了表
在Linux下查看数据库文件
1.cmd>adb shell
2.cd data/data
3.ls查看文件
4.进入要查看数据库的项目名
5.ls
6.cd databases
7.ls
8.sqlite3 “数据库名”
9. .tables
你好,首先非常感谢你能够在百忙之中给予回复,我创建了表,在SQLite客户端也能够正常执行,我是在客户端创建的数据库和表,并插入了表数据,但我在运行写的android程序时却报这种错误,是不是还要有个步骤打开数据库啊,我ContentProvider写的也没问题。
在创建数据库类onCreate(SQLiteDatabase db)方法里你把数据库关闭了吗?
没有,我方法如下:
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE list(_id INTEGER PRIMARY KEY,"
+ "num TEXT," + "area TEXT," + "t TEXT);");
}
就没有了,没有关闭数据库的操作。希望能得到你的指点!
数据库版本:DATABASE_VERSION=1;
//数据库构造方法
public ToDoDB(Context context)
{
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
//创建数据库方法
public void onCreate(SQLiteDatabase db) {
/*创建表info*/
String infoSql="CREATE TABLE "+ TABLE_NAME1 +"("+ INFO_ID
+" INTEGER primary key autoincrement," + " "+ GROUP_TYPE +" text ," + " "
+ INFO_TITLE + " text ," + " "+ INFO_CONTENT + " text)";
db.execSQL(infoSql);
/*创建类别表*/
String groupSql="CREATE TABLE "+ TABLE_NAME2 +"("+ GROUP_ID
+" INTEGER primary key autoincrement, " + " "+ GROUP_TYPES +" text)";
db.execSQL(groupSql);
Cursor c1 = db.query("info_table", null, null,
null, null, null, null);
if(c1.getCount()>0)
{
if(db.isOpen())
db.close();
}
}
以上是我的创建数据库方法
如果还不行的话把你的日志信息发上来,咱们研究一下
你可以通过下面的命令查看你是否创建了表
在Linux下查看数据库文件
1.cmd>adb shell
2.cd data/data
3.ls查看文件
4.进入要查看数据库的项目名
5.ls
6.cd databases
7.ls
8.sqlite3 “数据库名”
9. .tables
你好,首先非常感谢你能够在百忙之中给予回复,我创建了表,在SQLite客户端也能够正常执行,我是在客户端创建的数据库和表,并插入了表数据,但我在运行写的android程序时却报这种错误,是不是还要有个步骤打开数据库啊,我ContentProvider写的也没问题。
在创建数据库类onCreate(SQLiteDatabase db)方法里你把数据库关闭了吗?
没有,我方法如下:
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE list(_id INTEGER PRIMARY KEY,"
+ "num TEXT," + "area TEXT," + "t TEXT);");
}
就没有了,没有关闭数据库的操作。希望能得到你的指点!
你可以通过下面的命令查看你是否创建了表
在Linux下查看数据库文件
1.cmd>adb shell
2.cd data/data
3.ls查看文件
4.进入要查看数据库的项目名
5.ls
6.cd databases
7.ls
8.sqlite3 “数据库名”
9. .tables
你好,首先非常感谢你能够在百忙之中给予回复,我创建了表,在SQLite客户端也能够正常执行,我是在客户端创建的数据库和表,并插入了表数据,但我在运行写的android程序时却报这种错误,是不是还要有个步骤打开数据库啊,我ContentProvider写的也没问题。
在创建数据库类onCreate(SQLiteDatabase db)方法里你把数据库关闭了吗?
你可以通过下面的命令查看你是否创建了表
在Linux下查看数据库文件
1.cmd>adb shell
2.cd data/data
3.ls查看文件
4.进入要查看数据库的项目名
5.ls
6.cd databases
7.ls
8.sqlite3 “数据库名”
9. .tables
你好,首先非常感谢你能够在百忙之中给予回复,我创建了表,在SQLite客户端也能够正常执行,我是在客户端创建的数据库和表,并插入了表数据,但我在运行写的android程序时却报这种错误,是不是还要有个步骤打开数据库啊,我ContentProvider写的也没问题。
你可以通过下面的命令查看你是否创建了表
在Linux下查看数据库文件
1.cmd>adb shell
2.cd data/data
3.ls查看文件
4.进入要查看数据库的项目名
5.ls
6.cd databases
7.ls
8.sqlite3 “数据库名”
9. .tables
09-26 06:47:23.822: ERROR/AndroidRuntime(781): java.lang.RuntimeException: Unable to start receiver com.noteWidget.Note: android.database.sqlite.SQLiteException: Can't upgrade read-only database from version 0 to 1: /data/data/com.noteWidget/databases/note_db rollback ,和数据库不能打开异常
我在网上求助,多亏好友郑方提醒rollback然后我同事又帮我看了下,这时我才想起上次我在创建表的方法里把数据库给关了
public class CourseDAO extends SQLiteOpenHelper{
private final static String DATABASE_NAME="course_db";
private final static int DATABASE_VERSION=1;
private final static String TABLE_NAME1="course_table";
public final static String COURSE_ID="_id";
public final static String COURSE_NAME="course_name";
public final static String COURSE_TEACHER="course_teacher";
public final static String COURSE_DATE="course_time";
public final static String COURSE_ADDRESS="course_address";
public final static String COURSE_NUMBER="course_number";
private SQLiteDatabase db;
public String CREATE_TABLE_SQL ="CREATE TABLE "+ TABLE_NAME1 +"("+ COURSE_ID
+" INTEGER primary key autoincrement," + " "
+ COURSE_NAME + " text ," + " "+ COURSE_TEACHER + " text," + " "+ COURSE_DATE + " text" +
"," + " "+ COURSE_ADDRESS + " text," + " "+ COURSE_NUMBER + " text)";
public CourseDAO(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase db) {
String courseTable = "CREATE TABLE "+ TABLE_NAME1 +"("+ COURSE_ID
+" INTEGER primary key autoincrement," + " "
+ COURSE_NAME + " text ," + " "+ COURSE_TEACHER + " text," + " "+ COURSE_DATE + " text" +
"," + " "+ COURSE_ADDRESS + " text," + " "+ COURSE_NUMBER + " text)";
db.execSQL(courseTable);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS course_table");
onCreate(db);
}
/*根据星期查询*/
public Cursor queryByWeek(String week)
{
SQLiteDatabase dbDatabase = getReadableDatabase();
Cursor cursor =dbDatabase.query(TABLE_NAME1,
new String[]{COURSE_ID,
COURSE_NAME,
COURSE_TEACHER,
COURSE_DATE,
COURSE_ADDRESS,
COURSE_NUMBER},
"course_table.course_time="+"'"+week+"'", null, null, null, "course_table.course_number asc");
return cursor;
}
/*根据Id查询*/
public Cursor queryByInfoIdCursor(int infoId)
{
SQLiteDatabase dbDatabase = getReadableDatabase();
Cursor cursor =dbDatabase.query(TABLE_NAME1,new String[]{COURSE_ID,COURSE_TEACHER,COURSE_ADDRESS}, "course_table._id="+infoId, null, null, null, null);
return cursor;
}
/*根据Id查询*/
public Cursor queryByInfoId(int infoId)
{
SQLiteDatabase dbDatabase = getReadableDatabase();
Cursor cursor =dbDatabase.query(TABLE_NAME1,new String[]{COURSE_NAME,COURSE_NUMBER,COURSE_TEACHER,COURSE_ADDRESS}, "course_table._id="+infoId, null, null, null, null);
return cursor;
}
/*根据上课时间和上课节次查询*/
public Cursor queryByTimeAndNumber(String time,String number)
{
SQLiteDatabase db = getWritableDatabase();
String sql="select p._id,p.course_name" +
" from course_table as p where p.course_time="+"'"+time+"'" +"and p.course_number="+"'"+number+"'" ;
Cursor cursor=db.rawQuery(sql, null);
return cursor;
}
/*插入课程信息*/
public long course_insert(String name,String teacher,String date,String address,String number){
SQLiteDatabase dbDatabase=getWritableDatabase();
ContentValues cValues=new ContentValues();
cValues.put(COURSE_NAME, name);
cValues.put(COURSE_TEACHER,teacher);
cValues.put(COURSE_DATE,date);
cValues.put(COURSE_ADDRESS,address);
cValues.put(COURSE_NUMBER,number);
long row=dbDatabase.insert(TABLE_NAME1, null, cValues);
//sub_insert((int)row, subGroup);
return row;
}
/*更改课程信息*/
public long course_update(int id,String name,String teacher,String date,String address,String number){
SQLiteDatabase dbDatabase=getWritableDatabase();
ContentValues cValues=new ContentValues();
cValues.put(COURSE_NAME, name);
cValues.put(COURSE_TEACHER,teacher);
cValues.put(COURSE_DATE,date);
cValues.put(COURSE_ADDRESS,address);
cValues.put(COURSE_NUMBER,number);
String where = COURSE_ID+"= ?";
String[] whereValue={Integer.toString(id)};
long row=dbDatabase.update(TABLE_NAME1, cValues,where ,whereValue);
//sub_insert((int)row, subGroup);
return row;
}
//删除课程信息
public void deleteCourse(int id)
{
SQLiteDatabase db = getWritableDatabase();
String where = COURSE_ID+ "= ?";
String[] whereValue={Integer.toString(id)};
db.delete(TABLE_NAME1, where, whereValue);
}
评论
11 楼
xihuan&java
2010-10-13
woshayawo 写道
xihuan&java 写道
woshayawo 写道
你好,请问如果是这种错误,数据库应该如何打开呢,我的也是类似的报错:can't upgrade read-only database from version 0 to 1
看一下SQLiteOpenHelper.java:170是不是有问题
一下午都解决不了,最后放弃了使用ContentProvider的方法,直接操作进行中!
看你的日志是说SQLiteOpenHelper的第170行有错,ContentProvider我也没用过,还真不太熟悉,共同努力吧
10 楼
woshayawo
2010-10-12
xihuan&java 写道
woshayawo 写道
你好,请问如果是这种错误,数据库应该如何打开呢,我的也是类似的报错:can't upgrade read-only database from version 0 to 1
看一下SQLiteOpenHelper.java:170是不是有问题
一下午都解决不了,最后放弃了使用ContentProvider的方法,直接操作进行中!
9 楼
woshayawo
2010-10-12
xihuan&java 写道
woshayawo 写道
你好,请问如果是这种错误,数据库应该如何打开呢,我的也是类似的报错:can't upgrade read-only database from version 0 to 1
看一下SQLiteOpenHelper.java:170是不是有问题
又奋斗了半天,还是没有头绪,SQLiteOpenHelper.java没有问题,我再考虑放弃使用ContentProvider了,非常非常感谢朋友的热心相助,如果我发现解决方案,肯定跟帖!
8 楼
xihuan&java
2010-10-12
woshayawo 写道
你好,请问如果是这种错误,数据库应该如何打开呢,我的也是类似的报错:can't upgrade read-only database from version 0 to 1
看一下SQLiteOpenHelper.java:170是不是有问题
7 楼
woshayawo
2010-10-12
xihuan&java 写道
woshayawo 写道
xihuan&java 写道
woshayawo 写道
xihuan&java 写道
woshayawo 写道
你好,请问如果是这种错误,数据库应该如何打开呢,我的也是类似的报错:can't upgrade read-only database from version 0 to 1
你可以通过下面的命令查看你是否创建了表
在Linux下查看数据库文件
1.cmd>adb shell
2.cd data/data
3.ls查看文件
4.进入要查看数据库的项目名
5.ls
6.cd databases
7.ls
8.sqlite3 “数据库名”
9. .tables
你好,首先非常感谢你能够在百忙之中给予回复,我创建了表,在SQLite客户端也能够正常执行,我是在客户端创建的数据库和表,并插入了表数据,但我在运行写的android程序时却报这种错误,是不是还要有个步骤打开数据库啊,我ContentProvider写的也没问题。
在创建数据库类onCreate(SQLiteDatabase db)方法里你把数据库关闭了吗?
没有,我方法如下:
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE list(_id INTEGER PRIMARY KEY,"
+ "num TEXT," + "area TEXT," + "t TEXT);");
}
就没有了,没有关闭数据库的操作。希望能得到你的指点!
数据库版本:DATABASE_VERSION=1;
//数据库构造方法
public ToDoDB(Context context)
{
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
//创建数据库方法
public void onCreate(SQLiteDatabase db) {
/*创建表info*/
String infoSql="CREATE TABLE "+ TABLE_NAME1 +"("+ INFO_ID
+" INTEGER primary key autoincrement," + " "+ GROUP_TYPE +" text ," + " "
+ INFO_TITLE + " text ," + " "+ INFO_CONTENT + " text)";
db.execSQL(infoSql);
/*创建类别表*/
String groupSql="CREATE TABLE "+ TABLE_NAME2 +"("+ GROUP_ID
+" INTEGER primary key autoincrement, " + " "+ GROUP_TYPES +" text)";
db.execSQL(groupSql);
Cursor c1 = db.query("info_table", null, null,
null, null, null, null);
if(c1.getCount()>0)
{
if(db.isOpen())
db.close();
}
}
以上是我的创建数据库方法
如果还不行的话把你的日志信息发上来,咱们研究一下
首先我必须道谢,谢谢朋友的热情!
我们用的不一样的方法,我用的ContentProvider来实现的。
private static class DatabaseHelper extends SQLiteOpenHelper {
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE list(_id INTEGER PRIMARY KEY,"
+ "num TEXT," + "area TEXT," + "t TEXT);");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Log.w(TAG, "Upgrating database from version" + oldVersion + "to " +
newVersion + ",which will destory all old data");
db.execSQL("DROP TABLE IF EXISTS list");
onCreate(db);
}
}
我是这么写的。
DatabaseHelper 是内部类,外部类是AscriptionsProvider extends ContentProvider 有一些常量:
private static final String TAG = "AscriptionProvider";
private static final String DATABASE_NAME = "ascriptions.db";
private static final int DATABASE_VERSION = 1;
private static HashMap<String, String> ASCRIPTIONS_PROJECTION_MAP;
private static final int ASCRIPTIONS = 1;
private static final int ASCRIPTIONS_ID = 2;
private static final UriMatcher URL_MATCHER;
日志信息是:
10-12 03:13:38.199: ERROR/AndroidRuntime(31621): java.lang.RuntimeException: Unable to start activity ComponentInfo com.scu.sw.oeasy/com.scu.sw.oeasy.DialRecording}: android.database.sqlite.SQLiteException: Can't upgrade read-only database from version 0 to 1: /data/data/com.scu.sw.oeasy/databases/ascriptions.db
10-12 03:13:38.199: ERROR/AndroidRuntime(31621): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2268)
10-12 03:13:38.199: ERROR/AndroidRuntime(31621): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2284)
10-12 03:13:38.199: ERROR/AndroidRuntime(31621): at android.app.ActivityThread.access$1800(ActivityThread.java:112)
10-12 03:13:38.199: ERROR/AndroidRuntime(31621): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1692)
10-12 03:13:38.199: ERROR/AndroidRuntime(31621): at android.os.Handler.dispatchMessage(Handler.java:99)
10-12 03:13:38.199: ERROR/AndroidRuntime(31621): at android.os.Looper.loop(Looper.java:123)
10-12 03:13:38.199: ERROR/AndroidRuntime(31621): at android.app.ActivityThread.main(ActivityThread.java:3948)
10-12 03:13:38.199: ERROR/AndroidRuntime(31621): at java.lang.reflect.Method.invokeNative(Native Method)
10-12 03:13:38.199: ERROR/AndroidRuntime(31621): at java.lang.reflect.Method.invoke(Method.java:521)
10-12 03:13:38.199: ERROR/AndroidRuntime(31621): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:782)
10-12 03:13:38.199: ERROR/AndroidRuntime(31621): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:540)
10-12 03:13:38.199: ERROR/AndroidRuntime(31621): at dalvik.system.NativeStart.main(Native Method)
10-12 03:13:38.199: ERROR/AndroidRuntime(31621): Caused by: android.database.sqlite.SQLiteException: Can't upgrade read-only database from version 0 to 1: /data/data/com.scu.sw.oeasy/databases/ascriptions.db
10-12 03:13:38.199: ERROR/AndroidRuntime(31621): at android.database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:170)
10-12 03:13:38.199: ERROR/AndroidRuntime(31621): at com.scu.sw.oeasy.AscriptionsProvider.query(AscriptionsProvider.java:171)
10-12 03:13:38.199: ERROR/AndroidRuntime(31621): at android.content.ContentProvider$Transport.query(ContentProvider.java:129)
10-12 03:13:38.199: ERROR/AndroidRuntime(31621): at android.content.ContentResolver.query(ContentResolver.java:149)
10-12 03:13:38.199: ERROR/AndroidRuntime(31621): at com.scu.sw.oeasy.DialRecording.findNumberAscription(DialRecording.java:131)
10-12 03:13:38.199: ERROR/AndroidRuntime(31621): at com.scu.sw.oeasy.DialRecording.listDialRecord(DialRecording.java:114)
10-12 03:13:38.199: ERROR/AndroidRuntime(31621): at com.scu.sw.oeasy.DialRecording.onCreate(DialRecording.java:23)
10-12 03:13:38.199: ERROR/AndroidRuntime(31621): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1123)
10-12 03:13:38.199: ERROR/AndroidRuntime(31621): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2231)
10-12 03:13:38.199: ERROR/AndroidRuntime(31621): ... 11 more
先去吃饭吧,朋友!
6 楼
xihuan&java
2010-10-12
woshayawo 写道
xihuan&java 写道
woshayawo 写道
xihuan&java 写道
woshayawo 写道
你好,请问如果是这种错误,数据库应该如何打开呢,我的也是类似的报错:can't upgrade read-only database from version 0 to 1
你可以通过下面的命令查看你是否创建了表
在Linux下查看数据库文件
1.cmd>adb shell
2.cd data/data
3.ls查看文件
4.进入要查看数据库的项目名
5.ls
6.cd databases
7.ls
8.sqlite3 “数据库名”
9. .tables
你好,首先非常感谢你能够在百忙之中给予回复,我创建了表,在SQLite客户端也能够正常执行,我是在客户端创建的数据库和表,并插入了表数据,但我在运行写的android程序时却报这种错误,是不是还要有个步骤打开数据库啊,我ContentProvider写的也没问题。
在创建数据库类onCreate(SQLiteDatabase db)方法里你把数据库关闭了吗?
没有,我方法如下:
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE list(_id INTEGER PRIMARY KEY,"
+ "num TEXT," + "area TEXT," + "t TEXT);");
}
就没有了,没有关闭数据库的操作。希望能得到你的指点!
数据库版本:DATABASE_VERSION=1;
//数据库构造方法
public ToDoDB(Context context)
{
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
//创建数据库方法
public void onCreate(SQLiteDatabase db) {
/*创建表info*/
String infoSql="CREATE TABLE "+ TABLE_NAME1 +"("+ INFO_ID
+" INTEGER primary key autoincrement," + " "+ GROUP_TYPE +" text ," + " "
+ INFO_TITLE + " text ," + " "+ INFO_CONTENT + " text)";
db.execSQL(infoSql);
/*创建类别表*/
String groupSql="CREATE TABLE "+ TABLE_NAME2 +"("+ GROUP_ID
+" INTEGER primary key autoincrement, " + " "+ GROUP_TYPES +" text)";
db.execSQL(groupSql);
Cursor c1 = db.query("info_table", null, null,
null, null, null, null);
if(c1.getCount()>0)
{
if(db.isOpen())
db.close();
}
}
以上是我的创建数据库方法
如果还不行的话把你的日志信息发上来,咱们研究一下
5 楼
woshayawo
2010-10-12
xihuan&java 写道
woshayawo 写道
xihuan&java 写道
woshayawo 写道
你好,请问如果是这种错误,数据库应该如何打开呢,我的也是类似的报错:can't upgrade read-only database from version 0 to 1
你可以通过下面的命令查看你是否创建了表
在Linux下查看数据库文件
1.cmd>adb shell
2.cd data/data
3.ls查看文件
4.进入要查看数据库的项目名
5.ls
6.cd databases
7.ls
8.sqlite3 “数据库名”
9. .tables
你好,首先非常感谢你能够在百忙之中给予回复,我创建了表,在SQLite客户端也能够正常执行,我是在客户端创建的数据库和表,并插入了表数据,但我在运行写的android程序时却报这种错误,是不是还要有个步骤打开数据库啊,我ContentProvider写的也没问题。
在创建数据库类onCreate(SQLiteDatabase db)方法里你把数据库关闭了吗?
没有,我方法如下:
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE list(_id INTEGER PRIMARY KEY,"
+ "num TEXT," + "area TEXT," + "t TEXT);");
}
就没有了,没有关闭数据库的操作。希望能得到你的指点!
4 楼
xihuan&java
2010-10-12
woshayawo 写道
xihuan&java 写道
woshayawo 写道
你好,请问如果是这种错误,数据库应该如何打开呢,我的也是类似的报错:can't upgrade read-only database from version 0 to 1
你可以通过下面的命令查看你是否创建了表
在Linux下查看数据库文件
1.cmd>adb shell
2.cd data/data
3.ls查看文件
4.进入要查看数据库的项目名
5.ls
6.cd databases
7.ls
8.sqlite3 “数据库名”
9. .tables
你好,首先非常感谢你能够在百忙之中给予回复,我创建了表,在SQLite客户端也能够正常执行,我是在客户端创建的数据库和表,并插入了表数据,但我在运行写的android程序时却报这种错误,是不是还要有个步骤打开数据库啊,我ContentProvider写的也没问题。
在创建数据库类onCreate(SQLiteDatabase db)方法里你把数据库关闭了吗?
3 楼
woshayawo
2010-10-12
xihuan&java 写道
woshayawo 写道
你好,请问如果是这种错误,数据库应该如何打开呢,我的也是类似的报错:can't upgrade read-only database from version 0 to 1
你可以通过下面的命令查看你是否创建了表
在Linux下查看数据库文件
1.cmd>adb shell
2.cd data/data
3.ls查看文件
4.进入要查看数据库的项目名
5.ls
6.cd databases
7.ls
8.sqlite3 “数据库名”
9. .tables
你好,首先非常感谢你能够在百忙之中给予回复,我创建了表,在SQLite客户端也能够正常执行,我是在客户端创建的数据库和表,并插入了表数据,但我在运行写的android程序时却报这种错误,是不是还要有个步骤打开数据库啊,我ContentProvider写的也没问题。
2 楼
xihuan&java
2010-10-12
woshayawo 写道
你好,请问如果是这种错误,数据库应该如何打开呢,我的也是类似的报错:can't upgrade read-only database from version 0 to 1
你可以通过下面的命令查看你是否创建了表
在Linux下查看数据库文件
1.cmd>adb shell
2.cd data/data
3.ls查看文件
4.进入要查看数据库的项目名
5.ls
6.cd databases
7.ls
8.sqlite3 “数据库名”
9. .tables
1 楼
woshayawo
2010-10-12
你好,请问如果是这种错误,数据库应该如何打开呢,我的也是类似的报错:can't upgrade read-only database from version 0 to 1
发表评论
-
读写文本
2011-08-23 13:38 1581ldap http://www.360doc.com/cont ... -
短信数据库
2011-07-11 17:09 1172转自http://www.opda.com.cn/thread ... -
tabhost
2011-06-30 21:14 1035for (int i =0; i < tabWid ... -
增加主件
2011-06-22 17:56 971转自:http://ziyu-1.iteye.com/blog ... -
ProgressDialog
2011-06-21 18:08 1065写一个handler myHandler = new Han ... -
android intent调用
2011-06-12 13:09 1494转自:http://blog.csdn.net/y ... -
创建sdcard
2011-06-07 09:56 1269最近在做一个下载附件的小项目需要用到sdcard,在看了几位大 ... -
重写对话框dialog
2011-06-02 16:25 2836转自:http://wang-peng1.iteye.com/ ... -
listview问题
2011-06-01 14:06 1174http://www.cnblogs.com/helong/a ... -
urlconnection和httpclient
2011-05-23 17:16 4896urlconnection: String urlAddres ... -
转载android网络编程
2011-05-11 15:08 1291转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明 ... -
android网络编程
2011-05-09 09:57 2698转自:http://www.linuxidc.co ... -
android基础之Application
2011-05-09 09:32 2026远程Web服务器记录android客户端的登陆状态: 在And ... -
android基础
2011-02-24 15:40 1225View重绘和内存泄露的好像是面试经常问的问题 去点editt ... -
android 地图
2010-12-01 10:59 1225http://vip.du8.com/books/sepc0x ... -
android常见问题
2010-11-29 17:52 1189转自:http://eclc.sysu.edu.c ... -
android翻译
2010-11-19 13:01 1114通过网上一位仁兄的实例我 最近练习了一个在线翻译的项目下面把主 ... -
android 应用
2010-11-17 09:32 1358最近做了一个简单的天气预报,话不多说上代码 实时天气的hand ... -
播放器之seekBar
2010-11-03 16:11 15441.在播放器上加入滚动条的代码如下,把goOn()放到on ... -
android开发
2010-09-20 13:31 1523原地址http://www.dnbcw.com/bianche ...
相关推荐
这篇博客“Android SQLite学习工具”可能详细介绍了如何在Android环境中使用SQLite进行数据操作,并提供了一个实用的SQLite管理工具——sqlite3.exe。 SQLite数据库在Android中的应用主要包括创建数据库、创建表、...
一个简单的Android SQLite ORM框架不想花资源分的同学可以上我的github主页下载:https://github.com/chenyihan/Simple-SQLite-ORM-Android,因为要传到github,所以代码中的注释和doc文档都是英文的,对自己英文不...
在Android开发中,SQLite是一个内置的关系型数据库系统,用于存储应用程序的数据。SQLite数据库因其轻量级、高效且易于集成的特点,被广泛应用于移动设备。为了更方便地管理和操作SQLite数据库,开发者通常会借助...
验证android sqlite数据库insert 和delete 方法返回值的具体规律 insert 插入一行,如果当前最大id是4,insert新的一条记录id是5 ,如果把5删除, 在insert一条新的记录id还是5,如果删除的是id为4的记录, 再新增一...
在Android开发中,SQLite是一个非常重要的组成部分,它是一个轻量级的数据库系统,允许开发者在移动设备上存储和管理数据。本资料包包含了对Android SQLite的详细文档和源码分析,帮助开发者深入理解其工作原理。 ...
SQLite 是一个轻量级的关系型数据库管理系统,广泛应用于移动设备,尤其是 Android 平台。它无需服务器进程,可直接在应用程序中使用,非常适合存储和管理应用程序数据。Android 系统自始至终内置了 SQLite 支持,...
《Android SQLite Admin 数据库管理软件详解》 在移动应用开发领域,SQLite作为一款轻量级的数据库管理系统,广泛应用于Android平台。它允许开发者在应用程序中存储、管理和检索数据,而无需依赖外部服务器。为了...
android SQLite DBHelper 单例模式 实现 dbhelper=DBHelper.getInstance(this);
在Android应用开发中,SQLite是一个轻量级的关系型数据库,它被广泛用于存储应用程序的数据。SQLite数据库具有体积小、速度快、无需单独服务器进程等优点,非常适合嵌入式系统,如移动设备上的Android应用。本教程将...
在Android应用开发中,SQLite是一个轻量级的关系型数据库,常用于存储应用程序中的结构化数据。SQLite数据库的优势在于它不需要单独的服务进程,而是直接嵌入到应用程序中,提供了高效的本地数据存储解决方案。在这...
**Android SQLite GreenDao类库详解** SQLite是Android操作系统中内置的关系型数据库系统,它轻量级、高效且易于使用,适合存储应用中的结构化数据。然而,直接使用原生的SQLite API进行数据库操作可能会显得繁琐,...
在Android系统中,SQLite是一个轻量级的数据库引擎,它被集成到每个Android设备中,为应用程序提供本地数据存储功能。SQLite3是SQLite的一个版本,适用于Android开发中的数据管理。这个"android sqlite3 demo"是一个...
SQLite是一款轻量级的数据库管理系统,它被广泛应用于Android应用程序中,因为它不需要独立的服务进程,而是内嵌在应用中,提供了高效、可靠的本地数据存储功能。"android SQLite数据库管理软件"是一个专为Android...
在Android开发中,SQLite是一个非常重要的组成部分,它是一个轻量级的、开源的、嵌入式的SQL数据库引擎,被广泛用于存储和管理应用程序中的结构化数据。本案例围绕"android sqlite数据库框架"展开,旨在通过Java注解...
在Android开发中,SQLite是一个非常重要的组件,它是一个轻量级的数据库系统,适用于移动设备。SQLite被广泛用于存储和管理应用程序中的结构化数据。在这个"android Sqlite数据库操作demo"中,我们可以深入理解如何...
### 高清彩版 Android SQLite Essentials #### 一、引言与概述 《高清彩版 Android SQLite Essentials》是一本专注于Android平台下SQLite数据库应用开发的专业书籍。本书由Sunny Kumar Aditya 和 Vikash Kumar ...
在Android开发中,SQLite是一个非常重要的组件,它是一个轻量级的数据库系统,用于存储应用程序中的结构化数据。SQLite数据库支持多种操作,如创建、查询、更新和删除数据,是移动应用开发中首选的本地数据存储解决...
在Android开发中,SQLite是一个非常重要的组件,它是一个轻量级的、开源的、嵌入式的SQL数据库引擎,被广泛用于存储应用中的结构化数据。SQLite数据库的优势在于它不需要独立的服务器进程,而是直接集成在应用程序中...
在Android开发中,SQLite是一个内置的关系型数据库,用于存储应用程序中的结构化数据。SQLite数据库具有轻量级、可移植和自包含的特点,非常适合移动设备。然而,由于其命令行界面和编程API的复杂性,开发者有时需要...
本示例"android sqlite的两种管理方法demo"旨在介绍如何在Android应用中使用SQLite,包括通过Java API和Android SQLite数据库API进行数据库操作。 首先,让我们详细探讨**Java的SQLite管理方法**。在Android中,你...