创建并插入数据库

时间:2016-08-08 18:57:47

标签: android database sqlite android-sqlite

我正在尝试创建一个基本数据库并插入三个用户,但它不起作用。

这是一个创建数据库的类

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]);
                }
            }
        });

     }
}

1 个答案:

答案 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