写了个记账的单机软件,数据记录使用的是SQLite,现在遇到的问题是加入数据一直失败。
进入软件的顺序是FirstActivity -------从set进入menu的点击第一个选项触发跳转-----》AddAccount
数据库
DatabaseHelper.java
package com.example.managemoney.database;
import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DatabaseHelper extends SQLiteOpenHelper {
static int dbVersion=1;
static String name="data.db";
public DatabaseHelper(Context context){
super(context,name,null,dbVersion);
}
public void onUpgrade(SQLiteDatabase db, int a, int b){
}
//创建的时候使用一次
public void onCreate(SQLiteDatabase db){
String sql_01="create table write(id integer primary key autoincrement,"+
"MintCheng varchar(5),"+
"JingE float,"+
"GuiZhang varchar(5),"+
"BeiZhu varchar(100)," +
"Time varchar(30),"+
"Year integer,"+
"Month integer,"+
"Day integer,"+
"Hour integer,"+
"Minutes integer,"+
"Seconds integer)";
String sql_00="create table account(id integer primary key autoincrement,"+
"Account_MingCheng varchar(10) ,"+
"JingE float)";
db.execSQL(sql_00);
db.execSQL(sql_01);
}
}
DatabaseManager.java
package com.example.managemoney.database;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.widget.ArrayAdapter;
import android.widget.CursorAdapter;
import com.example.managemoney.Stct_Account;
import java.util.ConcurrentModificationException;
public class DatabaseManage {
private static DatabaseHelper helper;
private static int t=0;
//初始化数据库对象
public static void initDB(Context context){
//帮助类对象
helper=new DatabaseHelper(context);
//数据库对象
}
//读取数据库中的数据写入内存中
public static Cursor Read_Db(){
// 第一个参数String:表名
// 第二个参数String[]:要查询的列名
// 第三个参数String:查询条件
// 第四个参数String[]:查询条件的参数
// 第五个参数String:对查询的结果进行分组
// 第六个参数String:对分组的结果进行限制
// 第七个参数String:对查询的结果进行排序
SQLiteDatabase db=helper.getReadableDatabase();
Cursor cursor=db.query("account",new String[]{"Account_MintCheng","JingE float"},
null,null,null,null,null);
cursor.moveToFirst();
db.close();
return cursor;
}
//记账后更新表account
public static void update_account(Stct_Account sa){
SQLiteDatabase db=helper.getWritableDatabase();
ContentValues ct=new ContentValues();
ct.put("Account_MingCheng",sa.getMingCheng_01());
ct.put("JingE",sa.getJingE_01());
db.insert("account",null,ct);
db.close();
}
//将记账的数据写入表write
public void insert_write(ContentValues ct){
SQLiteDatabase db=helper.getWritableDatabase();
db.insert("write",null,ct);
db.close();
}
//插入数据到账户表中
public void InsertToTable_Write( ContentValues ct){
SQLiteDatabase db=helper.getWritableDatabase();
t=1;
//向账户表中插入数据
db.insert("account",null,ct);
db.close();
}
//查找账户是否存在
public static boolean FindAccount(String str){
SQLiteDatabase db=helper.getReadableDatabase();
if(t==0)return false;
Cursor cursor=db.rawQuery("Select count(*) from account;", null);
db.close();
int a=cursor.getCount();
if(a<=0)return false;
while(a>0){
if(cursor.getString(cursor.getColumnIndexOrThrow("Account_MingCheng")).equals(str)){
return true;
}
if(cursor.isLast()){
return false;
}
}
return false;
}
}
Firstactivity.java
public class FirstActivity extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.first_layout);
DatabaseManage.initDB(getApplicationContext());
//初始化listview
//初始化listview,绑定适配器
ListView listView_01=findViewById(R.id.ListView_01);
List<Stct_Account> list=getdata();
ArrayAdapter<Stct_Account>adapter=new ArrayAdapter<Stct_Account>(FirstActivity.this,
R.layout.listview_textview,list);
listView_01.setAdapter(adapter);
//set组件
ImageButton imb_set = findViewById(R.id.set);
imb_set.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
showPopupMenu(imb_set);
}
});
//set组件的菜单栏
private void showPopupMenu(View view){
//view当前popupmenu显示的相对view的位置
PopupMenu popupMenu = new PopupMenu(this, view);
//menu的布局
popupMenu.getMenuInflater().inflate(R.menu.main, popupMenu.getMenu());
//menu的item点击事件
popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem menuItem) {
switch(menuItem.getItemId()){
case R.id.menu_add_account:
Intent intent_01 = new Intent(FirstActivity.this, AddAccount.class);
;
startActivity(intent_01);
break;
case R.id.menu_change_account:
Intent intent_02 = new Intent(FirstActivity.this, ChangeAccount.class);
;
startActivity(intent_02);
break;
case R.id.menu_delete_account:
Intent intent_03 = new Intent(FirstActivity.this, DeleteAccount.class);
;
startActivity(intent_03);
break;
}
//添加账户
//修改账户
//删除账户
return false;
}
});
popupMenu.show();
//Popupmenu的关闭事件
}
public List<Stct_Account> getdata(){
//获得数据
List<Stct_Account> data=new ArrayList<Stct_Account>();
Cursor cursor=DatabaseManage.Read_Db();
if (cursor != null && cursor.getCount() >= 1) {
while (cursor.moveToNext()) {
Stct_Account sa=new Stct_Account();
sa.insertMingCheng_01(cursor.getString(cursor.getColumnIndexOrThrow("MingCheng")));
sa.insertJingE_01(cursor.getFloat(cursor.getColumnIndexOrThrow("JingE")));
data.add(sa);
}
}
cursor.close();
return data;
}
}
addaccount.java
package com.example.managemoney;
import android.content.ContentValues;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.text.InputType;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import com.example.managemoney.database.DatabaseManage;
public class AddAccount extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.add_account);
Button button=findViewById(R.id.aabt_01);
button.setOnClickListener(new View.OnClickListener(){
public void onClick(View view){
EditText ET_AAc=findViewById(R.id.aaet_01),
ET_AJe=findViewById(R.id.aaet_02);
ET_AJe.setInputType(InputType.TYPE_NUMBER_FLAG_DECIMAL);
String Str_AAc=ET_AAc.getText().toString();
if(Str_AAc.isEmpty()|ET_AJe.getText().toString().isEmpty())
{
Toast.makeText(AddAccount.this,"请检查填写信息是否有缺失",Toast.LENGTH_SHORT).show();
}
else
{
float F_Je=Float.valueOf(ET_AJe.getText().toString());
//将添加的账户信息插入到数据库中
Stct_Account stct_account=new Stct_Account();
stct_account.insertJingE_01(F_Je);
stct_account.insertMingCheng_01(Str_AAc);
DatabaseManage.update_account(stct_account);
//已有此账户名称,无法添加
if(DatabaseManage.FindAccount(Str_AAc)) {
Toast.makeText(AddAccount.this, "已有此名称账户,无法再次添加!", Toast.LENGTH_SHORT).show();
}
//
else {
boolean a=DatabaseManage.FindAccount(Str_AAc);
if(a)Toast.makeText(AddAccount.this,"111111",Toast.LENGTH_SHORT).show();
else Toast.makeText(AddAccount.this,"00000",Toast.LENGTH_SHORT).show();
Intent intent = new Intent(AddAccount.this,FirstActivity.class);;
startActivity(intent);
Toast.makeText(AddAccount.this, "添加成功!", Toast.LENGTH_SHORT).show();
}
}
}
});
}
}
写入失败,有日志提示吗?