Java (Android)无法将数据插入SQLite数据库

Java (Android)无法将数据插入SQLite数据库,java,android,Java,Android,我尝试了很多修复,但仍然无法找到无法插入数据的原因。我使用了一个名为BD Browser for SQLite的工具来检查数据,有表和列,但没有值 代码: public class MainActivity extends Activity { private Button btnadd,btnselect; private EditText etmiles,etdate,etcosts,etprice; SQLiteDatabase db; @Override protected void

我尝试了很多修复,但仍然无法找到无法插入数据的原因。我使用了一个名为BD Browser for SQLite的工具来检查数据,有表和列,但没有值

代码:

public class MainActivity extends Activity {
private Button btnadd,btnselect;
private EditText etmiles,etdate,etcosts,etprice;

SQLiteDatabase db;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    btnadd=(Button)findViewById(R.id.add);
    btnselect=(Button)findViewById(R.id.select);
    etmiles=(EditText)findViewById(R.id.miles);
    etdate=(EditText)findViewById(R.id.date);
    etprice=(EditText)findViewById(R.id.price);
    etcosts=(EditText)findViewById(R.id.costs);
    db=SQLiteDatabase.openOrCreateDatabase(this.getFilesDir().toString() + "/my.db3", null);



    btnselect.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            Intent intent=new Intent(MainActivity.this,Activity02.class);
            startActivity(intent);

        }
    });
     btnadd.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {


        String amiles=etmiles.getText().toString();
        String sdate=etdate.getText().toString();
        String sprice=etprice.getText().toString();
        String acosts=etcosts.getText().toString();
        if(etmiles.getText().toString().length() == 0||etdate.getText().toString().length() == 0||etprice.getText().toString().length() == 0||etcosts.getText().toString().length() == 0)
        {
            Toast toast=Toast.makeText(MainActivity.this, "xxxx", Toast.LENGTH_SHORT);
            toast.show();
            return;
        }
        else
        {

            try{
                db.execSQL("insert into test1('" + sdate + "','" + amiles +  "','" + sprice + "','" + acosts +  "')");

                }
                catch(SQLiteException e)
                {
                    db.execSQL("create table if not exists test1(sdate varchar(40) primary key,amiles varchar(30),sprice varchar(30),acosts varchar(30))");
                }        
        Toast toast=Toast.makeText(MainActivity.this, "xxxx", Toast.LENGTH_SHORT);
        toast.show();
        }
        }
    });

}
}


错误消息:near“)”:语法错误您的
INSERT
语句似乎与SQLite的语法不匹配。尝试添加
如下所示:

INSERT INTO test1 VALUES (..., ..., ...)
在Android上你应该考虑这个方法。

你应该使用

其中table是要插入的表的名称,
nullColumnHack
它是可选的,可以为null,values是包含要插入的值的映射。此映射的键是列名。例如

ContentValues values = new ContentValues(); 
values.put(HISTORY_ORDER_ID_COL, orderId); 
values.put(HISTORY_PRODUCT_ID_COL, productId); 

long rowId = db.insert(TABLE_ORDER, null, values);
android将负责为您编写插入查询