Android 如何添加自动增量ID?
我正在尝试将自动增量ID添加到数据库表中,并在用户选择“全部查看”时显示它。Android 如何添加自动增量ID?,android,android-sqlite,Android,Android Sqlite,我正在尝试将自动增量ID添加到数据库表中,并在用户选择“全部查看”时显示它。 但是,在将应用程序添加到我的表中后,应用程序将崩溃,我认为我正在错误地执行其中一个过程。 以下代码是我当前的实现,我没有尝试使用自动增量。 如果有人能在初始化过程中提供帮助,我将不胜感激;多谢各位 public class MainActivity extends Activity { EditText fname,lname,cost,make,model; Button add,view,viewall,Show1
但是,在将应用程序添加到我的表中后,应用程序将崩溃,我认为我正在错误地执行其中一个过程。
以下代码是我当前的实现,我没有尝试使用自动增量。
如果有人能在初始化过程中提供帮助,我将不胜感激;多谢各位
public class MainActivity extends Activity {
EditText fname,lname,cost,make,model;
Button add,view,viewall,Show1,delete,modify;
SQLiteDatabase db;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
fname=(EditText)findViewById(R.id.firstname);
lname=(EditText)findViewById(R.id.lastname);
cost=(EditText)findViewById(R.id.cost);
make=(EditText)findViewById(R.id.make);
model=(EditText)findViewById(R.id.model);
add=(Button)findViewById(R.id.addbtn);
viewall=(Button)findViewById(R.id.viewallbtn);
delete=(Button)findViewById(R.id.deletebtn);
Show1=(Button)findViewById(R.id.showbtn);
modify=(Button)findViewById(R.id.modifybtn);
db=openOrCreateDatabase("CARDEALER", Context.MODE_PRIVATE, null);
db.execSQL("CREATE TABLE IF NOT EXISTS student(id INTEGER PRIMARY KEY AUTOINCREMENT,cost INTEGER,make VARCHAR, model VARCHAR, fname VARCHAR, lname VARCHAR);");
add.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(cost.getText().toString().trim().length()==0||
make.getText().toString().trim().length()==0||
model.getText().toString().trim().length()==0||
fname.getText().toString().trim().length()==0||
lname.getText().toString().trim().length()==0)
{
showMessage("Error", "Please enter all values");
return;
}
db.execSQL("INSERT INTO student VALUES('"+id.getText()+"','"+cost.getText()+"','"+make.getText()+"','"+model.getText()+"','"+fname.getText()+
"','"+lname.getText()+"');");
showMessage("Success", "Record added successfully");
clearText();
}
});
delete.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(cost.getText().toString().trim().length()==0)
{
showMessage("Error", "Please enter Cost");
return;
}
Cursor c=db.rawQuery("SELECT * FROM student WHERE cost='"+cost.getText()+"'", null);
if(c.moveToFirst())
{
db.execSQL("DELETE FROM student WHERE cost='"+cost.getText()+"'");
showMessage("Success", "Record Deleted");
}
else
{
showMessage("Error", "Invalid Cost");
}
clearText();
}
});
modify.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(cost.getText().toString().trim().length()==0)
{
showMessage("Error", "Please enter Cost");
return;
}
Cursor c=db.rawQuery("SELECT * FROM student WHERE cost='"+cost.getText()+"'", null);
if(c.moveToFirst())
{
db.execSQL("UPDATE student SET make='"+make.getText()+"',model='"+model.getText()+"',fname='"+fname.getText()+"',lname='"+lname.getText()+
"' WHERE cost='"+cost.getText()+"'");
showMessage("Success", "Record Modified");
}
else
{
showMessage("Error", "Invalid Cost");
}
clearText();
}
});
viewall.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Cursor c=db.rawQuery("SELECT * FROM student", null);
if(c.getCount()==0)
{
showMessage("Error", "No records found");
return;
}
StringBuffer buffer=new StringBuffer();
while(c.moveToNext())
{
buffer.append("ID: "+c.getString(0)+"\n");
buffer.append("Cost: "+c.getString(1)+"\n");
buffer.append("Make: "+c.getString(2)+"\n");
buffer.append("Model: "+c.getString(3)+"\n");
buffer.append("First Name: "+c.getString(4)+"\n");
buffer.append("Last Name: "+c.getString(5)+"\n\n");
}
showMessage("Customer Detail", buffer.toString());
}
});
Show1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
showMessage("Customer Management Application", "Developed By Tanner Tattini");
}
});
}
public void showMessage(String title,String message)
{
Builder builder=new Builder(this);
builder.setCancelable(true);
builder.setTitle(title);
builder.setMessage(message);
builder.show();
}
public void clearText()
{
cost.setText("");
make.setText("");
model.setText("");
fname.setText("");
lname.setText("");
cost.requestFocus();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.customer_main, menu);
return true;
}
}
错误在第56行:
db.execSQL("INSERT INTO student VALUES('"+cost.getText()+"','"+make.getText()+"','"+model.getText()+"','"+fname.getText()+
"','"+lname.getText()+"');");
添加空值
删除成本中的单引号
成功
db.execSQL("INSERT INTO student VALUES(null,"+cost.getText()+",'"+make.getText()+"','"+model.getText()+"','"+fname.getText()+
"','"+lname.getText()+"');");
显示日志或调试器中的崩溃详细信息。另外,提醒您正在SQL语句中直接使用未初始化的输入,因此您现在必须这样做。我可以简单地将表创建为(“ID int NOT NULL AUTO_INCREMENT,cost INTEGER,make VARCHAR,model VARCHAR,fname VARCHAR,lname VARCHAR);”;然后在用户选择“全部查看”时显示值,是的,我知道,这只是一个学校项目,您应该显示您在问题本身中尝试过的内容。就目前情况而言,这是一个您编写的小程序,它无法正常工作。是时候学习你作为一名程序员所学到的最伟大的技能了:调试。(考虑到我链接的XKCD面板的上下文,你最后的评论非常讽刺。)哦,讽刺的是……学校参考这是我错过的修复!非常感谢。