该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
运行程序,不知道为何点插入数据按钮会报错,请万能的吧友帮我看看,谢谢,不废话,直接上代码
MainActivity.java
package com.example.activity16;
import android.support.v7.app.ActionBarActivity;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MainActivity extends ActionBarActivity {
private Button createButton;
private Button upDatabaseButton;
private Button insertButton;
private Button updateButton; //声明
private Button queryButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
createButton =(Button)findViewById(R.id.createButton);
upDatabaseButton=(Button)findViewById(R.id.upDatabaseButton);
insertButton=(Button)findViewById(R.id.insertButton); //声明
updateButton=(Button)findViewById(R.id.updateButton);
queryButton=(Button)findViewById(R.id.queryButton);
createButton.setOnClickListener(new CreateListener());
upDatabaseButton.setOnClickListener(new UpDatabaseListener());
insertButton.setOnClickListener(new InsertListener());
updateButton.setOnClickListener(new UpdateListener());
queryButton.setOnClickListener(new QueryListener());
}
class CreateListener implements OnClickListener{
@Override
public void onClick(View v) {
DatabaseHelper dbHelper=new DatabaseHelper(MainActivity.this,"tom_db", null, 1);
SQLiteDatabase db=dbHelper.getReadableDatabase();
//只用调用了这个方法,才会创建,打开数据库
}
}
class UpDatabaseListener implements OnClickListener{
@Override
public void onClick(View v) {
DatabaseHelper dbHelper =new DatabaseHelper(MainActivity.this, "tom_db", null, 2);
SQLiteDatabase db =dbHelper.getWritableDatabase();
//更新数据库的版本
}
}
class InsertListener implements OnClickListener{
@Override
public void onClick(View v) {
System.out.println("insert");
ContentValues values =new ContentValues();
values.put("id",1);
values.put("name", "jack");
//values.put("id",2);
//values.put("name", "lili");
DatabaseHelper dbHelper=new DatabaseHelper(MainActivity.this,"tom_db",null,2);
SQLiteDatabase db=dbHelper.getWritableDatabase();
//获得一个可写的数据库
db.insert("user", null, values);
//调用insert方法,把数据插入数据库中
}
}
class UpdateListener implements OnClickListener{
@Override
public void onClick(View v) {
System.out.println("update");
ContentValues values=new ContentValues();
values.put("name","Jim");
DatabaseHelper dbHelper =new DatabaseHelper(MainActivity.this,"tom_db",null,2);
SQLiteDatabase db=dbHelper.getWritableDatabase();
db.update("user", values, "id=?", new String[]{"2"});
}
}
class QueryListener implements OnClickListener{
@Override
public void onClick(View v) {
DatabaseHelper dbHelper =new DatabaseHelper(MainActivity.this,"tom_db",null,2);
SQLiteDatabase db=dbHelper.getReadableDatabase();
Cursor cursor =db.query("user", new String[]{"id","name"}, "id=?",new String[]{"1"}, null, null,null);
while(cursor.moveToNext()){
String name=cursor.getString(cursor.getColumnIndex("name"));
System.out.println("query------>"+name);
}
}
}
}
DatabaseHelper.java
package com.example.activity16;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
public class DatabaseHelper extends SQLiteOpenHelper{
private static final int VERSION=1;
public DatabaseHelper(Context context, String name, CursorFactory factory,int version) {
super(context, name, factory, version);
}//在SQLitOpenHelper的子类中,必须有该构造函数
@Override
public void onCreate(SQLiteDatabase db) {
//创建一个数据库
System.out.println("create a DataBase");
db.execSQL("create table user(id int name VARCHAR(20))");
//execSQL函数用于执行SQL语句
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
System.out.println("updatabase");
}
}
关于布局的XML文件我就不发了,请大神指点