2015-06-25 7 views
0

Я пробовал много исправлений, но до сих пор не могу понять, почему данные не могут быть вставлены. Я использовал инструмент BD Browser для SQLite для проверки данных и есть таблицы и столбцы, но нет значения ..(Android) Невозможно вставить данные в базу данных 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(); 
     } 
     } 
    }); 

} 

}

сообщение об ошибке: рядом ")": ошибка синтаксиса

ответ

1

кажется ваш INSERT стат ement не соответствует синтаксису SQLite. Попробуйте добавить VALUES так:

INSERT INTO test1 VALUES (..., ..., ...) 

И в самом деле на Android, вы должны рассмотреть метод insert() вместо этого.

1

вы должны использовать insert(String table, String nullColumnHack, ContentValues values)

где таблица имя таблицы, которую вы хотите вставить, nullColumnHack это не является обязательным и может быть пустым, а значения представляет собой карту, которая содержит значение, которое мы хотим вставить. Ключ этой карты - это имя столбца. Например.

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 позаботится о написании запроса на вставку для вас.

Смежные вопросы