每次运行的时候,都会出错退出,不知道问题在哪里,我把代码贴出来了,希望指点一下!
package com.sql;import android.app.Activity;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.Color;
import android.os.Bundle;
import android.widget.TextView;public class SqlActivity extends Activity {
OpenHelper myHelper;
TextView tv;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tv = (TextView)findViewById(R.id.tv);
//创建MySQLiteOpenHelper辅助类对象
myHelper = new OpenHelper(null);
//向数据库中插入和更新数据
insertAndUpdateData(myHelper);
//查询数据
String result = queryData(myHelper);
tv.setTextColor(Color.RED);
tv.setTextSize(20.0f);
tv.setText("名字\t等级\n"+result);
}
//向数据库中插入和更新数据
public void insertAndUpdateData(OpenHelper myHelper){
//SQLiteDatabase db = myHelper.getWritableDatabase();
Operating operating=new Operating(this);
account acc=new account("wh", 20, 200);
operating.Add(acc);
db.close();*/
}
//从数据库中查询数据
public String queryData(OpenHelper myHelper){
String result = "";
//获得数据库对象
SQLiteDatabase db = myHelper.getReadableDatabase();
//查询表中的数据
Cursor cursor = db.query("hero_info", null, null, null, null, null, "id asc");
//获取name列的索引
int nameIndex = cursor.getColumnIndex("name");
//获取level列的索引
int levelIndex = cursor.getColumnIndex("level");
for (cursor.moveToFirst();!(cursor.isAfterLast());cursor.moveToNext()) {
result = result + cursor.getString(nameIndex)+ "\t\t";
result = result + cursor.getInt(levelIndex)+" \n";
}
cursor.close();//关闭结果集
db.close();//关闭数据库对象
return result;
}
@Override
protected void onDestroy() {
SQLiteDatabase db = myHelper.getWritableDatabase();//获取数据库对象
//删除hero_info表中所有的数据 传入1 表示删除所有行
db.delete("hero_info", "1", null);
super.onDestroy();
}
}package com.sql;import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;public class OpenHelper extends SQLiteOpenHelper { public OpenHelper(Context context) {
super(context, "account.db", null, 1);
// TODO Auto-generated constructor stub
} @Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table if not exists hero_info("
+ "id integer primary key,"
+ "name varchar,"
+ "level integer)");
} @Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub }}
数据库的操作类
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.location.Address;public class Operating { private OpenHelper helper;
private SQLiteDatabase db;
public Operating(Context context)
{
helper = new OpenHelper(context);
}
public void Add(account acc)
{
db.execSQL("insert into t_student (sid,name,age) values (?,?,?)", new Object[]
{ acc.id,acc.name,acc.level });
}
}
package com.sql;import android.R.integer;
import android.R.string;public class account {
public int id;
public String name;
public int level;
public account() {
}
public account (String name, int id, int level) {
this.name = name;
this.id = id;
this.level = level;
}
}
package com.sql;import android.app.Activity;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.Color;
import android.os.Bundle;
import android.widget.TextView;public class SqlActivity extends Activity {
OpenHelper myHelper;
TextView tv;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tv = (TextView)findViewById(R.id.tv);
//创建MySQLiteOpenHelper辅助类对象
myHelper = new OpenHelper(null);
//向数据库中插入和更新数据
insertAndUpdateData(myHelper);
//查询数据
String result = queryData(myHelper);
tv.setTextColor(Color.RED);
tv.setTextSize(20.0f);
tv.setText("名字\t等级\n"+result);
}
//向数据库中插入和更新数据
public void insertAndUpdateData(OpenHelper myHelper){
//SQLiteDatabase db = myHelper.getWritableDatabase();
Operating operating=new Operating(this);
account acc=new account("wh", 20, 200);
operating.Add(acc);
db.close();*/
}
//从数据库中查询数据
public String queryData(OpenHelper myHelper){
String result = "";
//获得数据库对象
SQLiteDatabase db = myHelper.getReadableDatabase();
//查询表中的数据
Cursor cursor = db.query("hero_info", null, null, null, null, null, "id asc");
//获取name列的索引
int nameIndex = cursor.getColumnIndex("name");
//获取level列的索引
int levelIndex = cursor.getColumnIndex("level");
for (cursor.moveToFirst();!(cursor.isAfterLast());cursor.moveToNext()) {
result = result + cursor.getString(nameIndex)+ "\t\t";
result = result + cursor.getInt(levelIndex)+" \n";
}
cursor.close();//关闭结果集
db.close();//关闭数据库对象
return result;
}
@Override
protected void onDestroy() {
SQLiteDatabase db = myHelper.getWritableDatabase();//获取数据库对象
//删除hero_info表中所有的数据 传入1 表示删除所有行
db.delete("hero_info", "1", null);
super.onDestroy();
}
}package com.sql;import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;public class OpenHelper extends SQLiteOpenHelper { public OpenHelper(Context context) {
super(context, "account.db", null, 1);
// TODO Auto-generated constructor stub
} @Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table if not exists hero_info("
+ "id integer primary key,"
+ "name varchar,"
+ "level integer)");
} @Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub }}
数据库的操作类
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.location.Address;public class Operating { private OpenHelper helper;
private SQLiteDatabase db;
public Operating(Context context)
{
helper = new OpenHelper(context);
}
public void Add(account acc)
{
db.execSQL("insert into t_student (sid,name,age) values (?,?,?)", new Object[]
{ acc.id,acc.name,acc.level });
}
}
package com.sql;import android.R.integer;
import android.R.string;public class account {
public int id;
public String name;
public int level;
public account() {
}
public account (String name, int id, int level) {
this.name = name;
this.id = id;
this.level = level;
}
}
int nameIndex = cursor.getColumnIndex("name");
//获取level列的索引
int levelIndex = cursor.getColumnIndex("level");这两句你改成:
int nameIndex =cursor.getInt( cursor.getColumnIndex("name"));
int levelIndex =cursor.getInt( cursor.getColumnIndex("level"));
试试看行不行。提几点建议:
1.下次提问题的时候你最好描述的清楚点,最好吧log的输出语句贴上
2.可能我是新手,不太看得懂你这代码的逻辑。为什么在Activity创建的时候你就直接创建了数据库,而且进行了操作,在Activity销毁的时候你又删除了所有的数据,这样做的意义何在?如果涉及到贵公司的机密,抱歉,是我多嘴了。
3.如果你仅仅是为了联系一下android,建议使用按钮操作数据库,这样比较利于联系。
package com.example.db;import android.app.Activity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.Color;
import android.os.Bundle;
import android.widget.TextView;public class MainActivity extends Activity { Operating operating;
TextView tv; @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = (TextView)findViewById(R.id.tv);
//向数据库中插入和更新数据
insertAndUpdateData();
//查询数据
String result = operating.queryData();
tv.setTextColor(Color.RED);
tv.setTextSize(20.0f);
tv.setText("名字\t等级\n"+result); } //向数据库中插入和更新数据
public void insertAndUpdateData(){
//SQLiteDatabase db = myHelper.getWritableDatabase();
operating=new Operating(this);
account acc=new account("wh", 20, 200);
operating.Add(acc); // db.close();*/
} @Override
protected void onDestroy() {
operating.delete(); super.onDestroy();
}
}package com.example.db;import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;/**
* Created by pactera on 2017/3/9.
*/public class Operating {
private OpenHelper helper;
public Operating(Context context)
{
helper = new OpenHelper(context);
}
public void Add(account acc)
{ SQLiteDatabase db = helper.getWritableDatabase();
db.execSQL("insert into hero_info (id,name,level) values (?,?,?)", new Object[]
{ acc.id,acc.name,acc.level });
db.close();
} //从数据库中查询数据
public String queryData(){
String result = "";
//获得数据库对象
SQLiteDatabase db = helper.getReadableDatabase();
//查询表中的数据
Cursor cursor = db.query("hero_info", null, null, null, null, null, "id asc");
//获取name列的索引
int nameIndex = cursor.getColumnIndex("name");
//获取level列的索引
int levelIndex = cursor.getColumnIndex("level");
for (cursor.moveToFirst();!(cursor.isAfterLast());cursor.moveToNext()) {
result = result + cursor.getString(nameIndex)+ "\t\t";
result = result + cursor.getInt(levelIndex)+" \n";
}
cursor.close();//关闭结果集
db.close();//关闭数据库对象
return result;
} public void delete() {
SQLiteDatabase db = helper.getWritableDatabase();
//删除hero_info表中所有的数据 传入1 表示删除所有行
db.delete("hero_info", "1", null);
db.close();
}}package com.example.db;/**
* Created by pactera on 2017/3/9.
*/public class account { public int id;
public String name;
public int level;
public account() {
} public account (String name, int id, int level) {
this.name = name;
this.id = id;
this.level = level;
}
}package com.example.db;import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;/**
* Created by pactera on 2017/3/9.
*/public class OpenHelper extends SQLiteOpenHelper { public OpenHelper(Context context) {
super(context, "account.db", null, 1);
// TODO Auto-generated constructor stub
} @Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table if not exists hero_info("
+ "id integer primary key,"
+ "name varchar,"
+ "level integer)"); } @Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub }
}