Java 无法从数据库中插入和选择整数(Android)
MyDBClass.javaJava 无法从数据库中插入和选择整数(Android),java,android,android-sqlite,Java,Android,Android Sqlite,MyDBClass.java // Database Name private static final String DATABASE_NAME = "Listyu"; // Table Name private static final String TABLE_COUNTRY = "paylist"; public static final String[] ALL_KEYS = new String[] {"ID","Name","Amount"}; public myDBClass
// Database Name
private static final String DATABASE_NAME = "Listyu";
// Table Name
private static final String TABLE_COUNTRY = "paylist";
public static final String[] ALL_KEYS = new String[] {"ID","Name","Amount"};
public myDBClass(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
// Create Table Name
db.execSQL("CREATE TABLE " + TABLE_COUNTRY +
"(ID INTEGER PRIMARY KEY," +
" Amount INTEGER,"+
" Name TEXT(100));");
Log.d("CREATE TABLE","Create Table Successfully.");
}
// Insert Data
public long InsertData(String name, int amnt) {
try {
SQLiteDatabase db;
db = this.getWritableDatabase(); // Write Data
ContentValues Val = new ContentValues();
Val.put("Name", name);
Val.put("Amount", amnt);
long rows = db.insert(TABLE_COUNTRY, null, Val);
db.close();
return rows; // return rows inserted.
} catch (Exception e) {
return -1;
}
}
// Select Data
public Cursor SelectData() {
try {
SQLiteDatabase db;
db = this.getReadableDatabase(); // Read Data
Cursor cursor = db.query(TABLE_COUNTRY, new String[] { "ID AS _id, *" },null, null, null, null, null);
if(cursor != null) {
return cursor;
} else {
return null;
}
} catch (Exception e) {
return null;
}
}
Create.java
在这个类中,我插入了名称(string)和金额(int),如下所示:
String note = et.getText().toString();
String amount = ett.getText().toString();
int converted = Integer.parseInt(amount);
myDb.InsertData(note,converted);
List.java
在这个类中,我调用列表视图中插入的所有金额,如下所示,当list.java打开时,程序不工作
myDb = new myDBClass(this);
ListView lisView1 = (ListView)findViewById(R.id.listView1);
final Cursor c = myDb.SelectData();
lisView1.setAdapter(new CountryAdapter(this, c ));
registerForContextMenu(lisView1);
public class CountryAdapter extends CursorAdapter
{
private Cursor cursor;
public CountryAdapter(Context context, Cursor cur) {
super(context, cur , 0);
this.cursor = cur;
}
@Override
public void bindView(View view, Context context, final Cursor cursor) {
// ColID
TextView txtID = (TextView) view.findViewById(R.id.textsv);
txtID.setText(cursor.getString(cursor.getColumnIndex("Amount")));
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
// TODO Auto-generated method stub
LayoutInflater inflater = LayoutInflater.from(context);
View view = inflater.inflate(R.layout.item_layout, parent, false);
bindView(view, context, cursor);
return view;
}
使之类似于Val.put(“金额”和“+amnt”);如果您单步浏览应用程序,返回的光标是实际包含数据还是为空?否,没有数据插入。请打印从插入方法返回的数字。如果为负1,则不插入任何数据,并且存在一个您忽略的错误谢谢@cricket_007。顺便说一句,我没有把Amount看作int,而是处理了文本类型,效果很好;如果您单步浏览应用程序,返回的光标是实际包含数据还是为空?否,没有数据插入。请打印从插入方法返回的数字。如果为负1,则不插入任何数据,并且存在一个您忽略的错误谢谢@cricket_007。顺便说一句,我没有把Amount看作int,而是处理了文本类型,效果很好。