这是我的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;。我无法找到背后的原因。请帮忙。
答案 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;
}