カーソルの実行後、エラーが発生し、メッセージが null として表示されます。テーブルが既に作成されており、データもデータベースに挿入されているため、手がかりがありません。
コード データベース クラス
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メッセージでカーソルに来るとnullが表示されます。データベースが作成され、テーブルが作成され、このエラーが発生したときにデータも挿入され、テーブルが作成されず、カーソルコードを削除するアプリケーションを実行するとすべてが取得されるため、混乱します作成した。
この問題を解決するのを手伝ってください。
よろしくシヴァ