1

执行游标后,我收到错误消息,消息显示为空。我不知道,因为表已经创建并且数据也正在插入数据库中。

代码数据库类

import android.content.Context;
import android.database.Cursor;
import android.database.DatabaseErrorHandler;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
import android.widget.Toast;

import com.example.portfoliomanager.R;

public class Database  extends SQLiteOpenHelper {

    static final String dbname="DataManager";
    static final int dbversion=1;

    TableA r=new TableA();


    SQLiteDatabase db;

    private Context Context;
    public Database(Context context) {
        super(context,  dbname, null, dbversion);
        try{
        db=getWritableDatabase();

        if (db.isOpen()){

            System.out.println("Database is opened");
        }
            else{


                System.out.println("Database is not opened");
            }

        }
        catch(Exception e){

            Log.e(dbname,""+ e.getMessage());

        }
    }


    @Override
    public void onCreate(SQLiteDatabase db) {

        // TODO Auto-generated method stub
        try{
        db.beginTransaction();

        db.execSQL(r.r_Table);

        db.insert(r.Tablename, null, r.insertdata());
        db.setTransactionSuccessful();

        r.doInBackground(null);
        }
        catch(Exception e){

            android.util.Log.e(r.Tablename,""+ e.getMessage());
            android.util.Log.e(r.Tablename,""+ e.getLocalizedMessage());
        }

        finally{

            db.endTransaction();
        }

我为表创建、插入和检索编写代码的表类

import org.apache.commons.logging.Log;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.os.AsyncTask;
import android.widget.Toast;

public class TableA extends AsyncTask<String, Void, Void>{


    String Tablename = "Data";
    private String Column1 = "ID";
    private String Column2 = "FirstName";
    private String Column3 = "LastNAme";

    private String C1;
    private String C2;
    private String C3;

    Database rd;
    Cursor c;


    public final String r_Table = "CREATE TABLE " + Tablename + " (" + Column1+ " INTEGER PRIMARY KEY , " + Column2 + " TEXT, " + Column3 + " Text) ";



    public void setcolumn1(String ID1){
        C1=ID1;
        }
    public  int getcolumn1(){
        return Integer.parseInt(C1);
    }
    public void setcolumn2(String rname){
        C2=rname;
        }
    public String getcolumn2(){
        return C2;
    }
    public void setcolumn3(String Lname){
        C3=Lname;
        }
    public String getcolumn3(){
        return C3;
    }

    public ContentValues insertdata(){


        setcolumn1("1");
        setcolumn2("Ravi");
        setcolumn3("Kumar");

        ContentValues cv=new ContentValues();
        cv.put(Column1, Integer.valueOf(getcolumn1()));
        cv.put(Column2, getcolumn2());
        cv.put(Column3, getcolumn3());

        android.util.Log.i(Column1, String.valueOf(getcolumn1()));
        android.util.Log.i(Column2, getcolumn2());
        android.util.Log.i(Column3, getcolumn3());

            System.out.println(getcolumn1());
            System.out.println(getcolumn2());
            System.out.println(getcolumn3());



        return cv;          

    }
    @Override
    protected Void doInBackground(String... params) {




        c=rd.db.rawQuery("Select * from Data", null);
        if(c!=null){

            if(c.moveToFirst()){

                System.out.println("Column Count is: "+c.getColumnCount());
                System.out.println("Row Count is: "+c.getCount());
            }
            c.close();
        }
        return null;
    }

现在,当显示的 logcat 消息中的光标控制为空时,我很困惑,因为创建了数据库,创建了表,并且当我收到此错误时也插入了数据,然后没有创建表,但是当我运行应用程序删除光标代码时,一切都得到了创建的。

请帮我解决这个问题。

问候湿婆

4

0 回答 0