java - 当 onCreate() 方法将调用而其他将是动态的单击数据库中的按钮时,如何插入第一行值静态?
问题描述
我检查客户是否index=0
在OnCREATE
方法上插入数据,否则部分在点击按钮上插入数据。
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;
}
}
我试过这样但不知道如何在第一行添加数据。任何帮助,将不胜感激!
解决方案
您的问题可能是您开始交易但不提交(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 表是否有任何行,如果没有,则添加第一行。如果行已经存在,则不添加任何内容。
- 请注意,以上内容基于可用信息并做出一些假设,因此可能无法满足所有情况。
推荐阅读
- python - Python 应用程序和 Apache 与 wgsi
- mongodb - 在嵌套数组中获取 $Max 值
- javascript - 如何上传pdf或jpeg文件?
- c# - 如何从 p12 文件中读取 SecretKey?
- php - 当我从 android studio 运行我的应用程序时,它可以正常工作,但不能从 google play 运行
- ios - IOS:访问本地网络
- javascript - 检测图边缘重叠
- python - 如何使用python进行端口转发
- reactjs - 如何在 reactjs 中使用 react-form-stepper
- javascript - 如何通过调用函数从 html 中的 mysql 检索数据?