我正在尝试创建一个基本数据库并插入三个用户,但它不起作用。
这是一个创建数据库的类
package com.example.matadoor.db1;
import android.content.Context;
import android.database.DatabaseErrorHandler;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
/**
* Created by matadoor on 06/08/2016.
*/
public class dbcreat extends SQLiteOpenHelper {
public final String tbname="t1";
public final String cid="id";
public static String cid2="test";
public final String user="username";
public final String creat="CREATE TABLE "+cid2+"("+cid+"INTEGER primery key AUTO_INCREMENT , "+user+" TEXT); ";
public dbcreat(Context context) {
super(context,cid2,null, 1);
}
public dbcreat(Context context, String name, SQLiteDatabase.CursorFactory factory, int version, DatabaseErrorHandler errorHandler) {
super(context, name, factory, version, errorHandler);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(creat);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
它是处理数据库的另一个类 - 打开它,关闭它并插入它
package com.example.matadoor.db1;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
/**
* Created by matadoor on 08/08/2016.
*/
public class dbhandler {
private dbcreat dbc;
private SQLiteDatabase sdb;
public dbhandler(Context context)
{
dbc=new dbcreat(context);
}
public void open()
{
sdb=dbc.getWritableDatabase();
}
public void close(){
dbc.close();
}
public String display(int row)
{
Cursor cu=sdb.query(dbc.tbname,null,null,null,null,null,null);
cu.moveToPosition(row);
String user=cu.getString(1);
return user;
}
public void insert(String user)
{
ContentValues cn=new ContentValues();
cn.put(dbc.user,user);
}
}
主类有一个Button,用于将用户插入db
package com.example.matadoor.db1;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class Main extends AppCompatActivity {
Button btn;
dbhandler db;
dbcreat dbc;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btn=(Button)findViewById(R.id.ins);
// dbc.getWritableDatabase();
db.open();
db=new dbhandler(this);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String [] user={"ali","reza","ahmed"};
for(int i=0;i<user.length;i++)
{
db.insert(user[i]);
}
}
});
}
}
答案 0 :(得分:0)
所以这似乎是一个错误。你需要切换这两行。
db.open(); // NullPointer here
db=new dbhandler(this);
假设代码没有其他错误,则此方法对数据库不执行任何操作。
public void insert(String user)
{
ContentValues cn=new ContentValues();
cn.put(dbc.user,user);
}
您必须使用sdb.insert
变量拨打cn
。