每次运行的时候,都会出错退出,不知道问题在哪里,我把代码贴出来了,希望指点一下!
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;  
    }  
}

解决方案 »

  1.   

    把Log贴出来
      

  2.   

    //获取name列的索引
    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,建议使用按钮操作数据库,这样比较利于联系。
      

  3.   

    你这代码错误太多啦……你看看你创建的表名字和你插入的表名字一样吗?还有就是你插入时候使用的db没有赋值,MainActivity里的  myHelper = new OpenHelper(null);这句话是几个意思?给个null,你这就创建数据库失败了,应该传this。还有你既然写了operating这个帮助类,那你就应该把所有增删改查都写这个类里吧,你这逻辑要重新改改啊,还有就是SqliteOpenHelper提供了insert方法,为什么还要自己写sql语句啊。我把我帮你改的代码,放下边,你试试把:
    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    }
    }
      

  4.   

    Logcat报什么呢?