- 浏览: 159663 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
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 1542ldap http://www.360doc.com/cont ... -
短信数据库
2011-07-11 17:09 1131转自http://www.opda.com.cn/thread ... -
tabhost
2011-06-30 21:14 1006for (int i =0; i < tabWid ... -
增加主件
2011-06-22 17:56 934转自:http://ziyu-1.iteye.com/blog ... -
ProgressDialog
2011-06-21 18:08 1034写一个handler myHandler = new Han ... -
android intent调用
2011-06-12 13:09 1458转自:http://blog.csdn.net/y ... -
创建sdcard
2011-06-07 09:56 1232最近在做一个下载附件的小项目需要用到sdcard,在看了几位大 ... -
重写对话框dialog
2011-06-02 16:25 2789转自:http://wang-peng1.iteye.com/ ... -
listview问题
2011-06-01 14:06 1141http://www.cnblogs.com/helong/a ... -
urlconnection和httpclient
2011-05-23 17:16 4854urlconnection: String urlAddres ... -
转载android网络编程
2011-05-11 15:08 1263转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明 ... -
android网络编程
2011-05-09 09:57 2665转自:http://www.linuxidc.co ... -
android基础之Application
2011-05-09 09:32 1973远程Web服务器记录android客户端的登陆状态: 在And ... -
android基础
2011-02-24 15:40 1193View重绘和内存泄露的好像是面试经常问的问题 去点editt ... -
android 地图
2010-12-01 10:59 1202http://vip.du8.com/books/sepc0x ... -
android常见问题
2010-11-29 17:52 1156转自:http://eclc.sysu.edu.c ... -
android翻译
2010-11-19 13:01 1077通过网上一位仁兄的实例我 最近练习了一个在线翻译的项目下面把主 ... -
android 应用
2010-11-17 09:32 1325最近做了一个简单的天气预报,话不多说上代码 实时天气的hand ... -
播放器之seekBar
2010-11-03 16:11 15181.在播放器上加入滚动条的代码如下,把goOn()放到on ... -
android开发
2010-09-20 13:31 1491原地址http://www.dnbcw.com/bianche ...
相关推荐
一个简单的Android SQLite ORM框架不想花资源分的同学可以上我的github主页下载:https://github.com/chenyihan/Simple-SQLite-ORM-Android,因为要传到github,所以代码中的注释和doc文档都是英文的,对自己英文不...
SQlite Android SQLite的应用 简易的学生成绩管理系统 1.用到类似表单的界面。界面美观清晰。 2.搭建ListView WIdget组件。单击列表项即可对其删除修改。 3.实现了对学生信息的增,删,改,查。
android sqlite可视化工具,可以导入新建数据这个数据库里
关于Android SQLite的基本操作,留作以后使用
开源的android sqlite数据操作工具类。
验证android sqlite数据库insert 和delete 方法返回值的具体规律 insert 插入一行,如果当前最大id是4,insert新的一条记录id是5 ,如果把5删除, 在insert一条新的记录id还是5,如果删除的是id为4的记录, 再新增一...
android sqlite的使用方法
android Sqlite 基本操作 包含基本增删改插操作
android sqlite示例代码
android sqlite developer sqlite开发工具 软件小 已安装 就是没次用都需要把数据库文件从模拟器中提出来 然后在新建 就是注册新数据库 不过用这挺方便的
android sqlite 使用详解 带源码讲解
android sqlite数据库 demo code 小型便签 实现增加和编辑。删除数据 结构化存储数据
Android Sqlite正则匹配
高清彩版 Android SQLite Essentials
Android SQLite可视化操作工具,支持SQL数据导入,编辑,查看,SQL查询
NULL 博文链接:https://ghostfromheaven.iteye.com/blog/976680
android SQLite DBHelper 单例模式 实现 dbhelper=DBHelper.getInstance(this);
Android SQLite 增删改查操作实例
android sqlite 学习,使用java的语法规则和 android自带的语法规则进行数据库的增删查改
一个简单的android sqlite的例子(包含增删改查),是和初学者入门,本人呕心沥血之作,还望大家尊重版权有任何问题可以问我,我的邮箱lipengpeng82010Q@qq.com