【问题标题】:Not able to create table successfully in SQLite Android无法在 SQLite Android 中成功创建表
【发布时间】:2017-05-03 17:20:03
【问题描述】:

这是我的 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“错误!文件未保存。”。我不知道是什么错误。

我还尝试通过以下函数显示表格(以防表格可能已经创建并且它可能仍然显示错误的 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 “未找到数据”。我无法找到这背后的原因。请帮忙。

【问题讨论】:

    标签: android sqlite android-sqlite android-database


    【解决方案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;
        }
    

    【讨论】:

    • 糟糕,这是一个非常愚蠢的错误。非常感谢。
    猜你喜欢
    • 2012-03-26
    • 1970-01-01
    • 2018-10-05
    • 1970-01-01
    • 1970-01-01
    • 2020-06-04
    • 1970-01-01
    • 2022-08-14
    • 1970-01-01
    相关资源
    最近更新 更多