无法在 SQLite Android 中成功创建 table

Not able to create table successfully in SQLite Android

这是我的 SQLiteHelper class。

package com.example.user.balancesheet;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

public class DatabaseHelper extends SQLiteOpenHelper{
    private static final int DB_Version=1;
    private static final String Database="BalanceSheet.db";
    public static String Tablename="balance_table";

     public DatabaseHelper(Context context) {
        super(context, Database, null, DB_Version);
         SQLiteDatabase db=this.getWritableDatabase();
    }

    @Override
    public void onCreate(SQLiteDatabase db) {

        Log.d("METHOD", "onCreate");
        String query="CREATE TABLE " + Tablename +" (ID INTEGER, 
        ACCOUNT_HOLDER TEXT, DEBIT INTEGER, CREDIT INTEGER, BALANCE 
        INTEGER)";
       db.execSQL(query);
        Log.d("Table", "onCreate");
   }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) 
{
        db.execSQL("DROP IF EXIST " + Tablename);
        onCreate(db);
    }

    public Boolean insertdata(int i, String name, int deb, int cred, int 
    bal){
        SQLiteDatabase db=this.getWritableDatabase();
        ContentValues val=new ContentValues();
        val.put("ID", i);
        val.put("ACCOUNT_HOLDER", name);
        val.put("DEBIT", deb);
        val.put("CREDIT_HOLDER", cred);
        val.put("BALANCE", bal);
        long result=db.insert(Tablename, null, val);
        Log.d("METHOD","ADDLEDGER");
        if(result==-1)
            return false;
        else
            return true;
    }

    public Cursor showData(){
        SQLiteDatabase db=this.getWritableDatabase();
        Cursor c=db.rawQuery("select * from " + Tablename, null);
        Log.d("Method", "showData");
        return c;
    }
}

这是调用此 class 以创建 table 并在其中插入值的函数。

 save.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                DatabaseHelper db=new DatabaseHelper(NewFile.this);
                int i;
                Boolean flag=false;
                for(i=0;i<20;i++)
                    flag=db.insertdata(i, name[i], debit[i], credit[i], 
                    bal[i]);
                if(flag==true)
                    Toast.makeText(getApplicationContext(), "File Saved 
                    Successfully.", Toast.LENGTH_LONG).show();
                else
                    Toast.makeText(getApplicationContext(), "Error! File Not 
                    Saved.", Toast.LENGTH_LONG).show();
            }
        });

输入值后单击“保存”后,它总是显示 Toast "Error! File Not Saved."。我不知道错误是什么。

我还尝试通过以下函数显示 table(以防 table 可能已创建并且它可能仍然显示假 Toast)。

 but.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                tablename=table.getText().toString();
                DatabaseHelper dbHandler=new DatabaseHelper(File.this);
                int i=0;
                Cursor c = dbHandler.showData();
                if(c.getCount()==0)
                    Toast.makeText(getApplicationContext(), "No Data 
                    Found!", Toast.LENGTH_LONG).show();

                while (c.moveToNext()&&i<20){
                    name[i]=c.getString(1);
                    debit[i]=Integer.parseInt(c.getString(2));
                     credit[i]=Integer.parseInt(c.getString(3));
                     bal[i]=Integer.parseInt(c.getString(4));
                    i++;
                }
});

这一次,它显示的是吐司"No Data Found"。我无法找到这背后的原因。请帮忙。

使用列 CREDIT 而不是 CREDIT_HOLDER

更新 insertdata() 方法如下:

    public Boolean insertdata(int i, String name, int deb, int cred, int bal) {
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues val = new ContentValues();
        val.put("ID", i);
        val.put("ACCOUNT_HOLDER", name);
        val.put("DEBIT", deb);
        val.put("CREDIT", cred);
        val.put("BALANCE", bal);
        long result = db.insert(Tablename, null, val);

        Log.d("METHOD","ADDLEDGER");

        if(result==-1)
            return false;
        else
            return true;
    }