无法在SQLite Android中成功创建表

时间:2017-05-03 17:20:04

标签: android sqlite android-sqlite android-database

这是我的SQLiteHelper类。

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;
    }
}

这个函数用于创建表并在其中插入值。

 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&#34;错误!文件未保存。&#34;。我不知道错误是什么。

我还尝试通过以下函数显示表格(如果表格可能已经创建,并且可能仍然显示错误的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++;
                }
});

这一次,它显示了Toast&#34; No Data Found&#34;。我无法找到背后的原因。请帮忙。

1 个答案:

答案 0 :(得分:1)

使用列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;
    }