首页 > 解决方案 > 当 onCreate() 方法将调用而其他将是动态的单击数据库中的按钮时,如何插入第一行值静态?

问题描述

我检查客户是否index=0OnCREATE方法上插入数据,否则部分在点击按钮上插入数据。

if (C_Id==0){
    helper.CustomerAdd(new CustomerModel("developer","test","test@gmail.com","9874643212","test",null,"abc road","gurgaon","india",null));
}

public int CustomerAdd(CustomerModel fm){
    int cust_id=0;
    SQLiteDatabase db = this.getWritableDatabase();
    db.beginTransaction();
    ContentValues cv = new ContentValues();
    cv.put( C_NAME, fm.getC_name() );
    cv.put( C_NO, fm.getC_phone() );
    cv.put( C_EMAIL, fm.getC_email() );
    cv.put( BILL_NAME, fm.getC_bill_name() );
    cv.put( GST_NO, fm.getGst_no() );
    cv.put( C_ADDRESS, fm.getC_address() );
    cv.put( CITY, fm.getC_city() );
    cv.put( Country, fm.getC_country() );
    cv.put( DESCRIPTION, fm.getDescription() );
    cv.put( JOB_Tittle, fm.getJob_title());
    SimpleDateFormat sdfdndj = new SimpleDateFormat( "dd/MM/yy" );
    String Timedatanew = sdfdndj.format( new java.util.Date() );
    cv.put( Created_date, Timedatanew );
    try{
        db.insert( CUSTOMER_TABLE, null, cv );
        Cursor cursor = db.rawQuery( "Select C_ID from CUSTOMER Order by C_ID DESC limit 1",null);
        if (cursor.moveToLast()){
            cust_id= cursor.getInt( 0 );
        }else {
            cust_id=0;
        }
    }

我试过这样但不知道如何在第一行添加数据。任何帮助,将不胜感激!

标签: javaandroidandroid-sqlite

解决方案


您的问题可能是您开始交易但不提交(setTransactionSuccessful)并结束交易。

但是,对于诸如插入行之类的单个操作,则无需开始/提交/结束,因为它是单个操作,它将是它自己的事务。

因此,您可以删除该行db.beginTransaction();


如果您的问题是如何在 CUSTOMER 表中添加一行,如果没有行,则在活动的 onCreate 方法中,您可以编写代码并调用以下方法(假设 CustomerAdd 方法位于名为MyDatabaseHelper的类中,因此您可能需要相应地更改)

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    helper = new MyDatabaseHelper(this);
    addFirstCustomerIfNone(); //<<<<<<<<<<
}

private void addFirstCustomerIfNone() {
    SQLiteDatabase db = helper.getWritableDatabase();
    if(DatabaseUtils.queryNumEntries(db,"CUSTOMER") < 1) {
        if (helper.CustomerAdd(new CustomerModel("developer","test","test@gmail.com","9874643212","test",null,"abc road","gurgaon","india",null)) ==0) {
            Toast.makeText(this,"Customer Added Successfully.",Toast.LENGTH_SHORT).show();
        } else {
            Toast.makeText(this,"Customer was not added.",Toast.LENGTH_SHORT).show();
        }
    }
}

因此,当活动启动并调用 onCreate 方法时,帮助器(数据库帮助器类的实例)被实例化,然后调用addFirstCustomerIfNone方法。

addFirstCustomerIfNone方法检查 CUSTOMER 表是否有任何行,如果没有,则添加第一行。如果行已经存在,则不添加任何内容。

  • 请注意,以上内容基于可用信息并做出一些假设,因此可能无法满足所有情况。

推荐阅读