java 安卓 sqlite数据库,java-从android中的sqlite数据库检索数据时出现...

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 19:15   847   0

我正在尝试使用sqlite在eclipse中从数据库中插入和检索数据,但是它显示了RuntimeError.我创建了一个包含三个编辑文本和一个按钮的布局,用于从中创建简单信息,但是什么也没有创建.我使用以下代码创建Java数据库:

package com.example.databasetest;

import android.content.ContentValues;

import android.content.Context;

import android.database.SQLException;

import android.database.sqlite.SQLiteDatabase;

import android.database.sqlite.SQLiteOpenHelper;

import android.util.Log;

public class DBHelper extends SQLiteOpenHelper{

private static final int DATABASE_VERSION = 1;

private static final String DATABASE_NAME = "teacher";

private static final String TABLE_NAME = "teacher_table";

private static final String NAME = "teacher_name";

private static final String FATHER_NAME = "father_name";

private static final String MOTHER_NAME = "mother_name";

SQLiteDatabase data=this.getWritableDatabase();

Context ctx;

public DBHelper(Context context) {

super(context, DATABASE_NAME, null, DATABASE_VERSION);

ctx=context;

Log.d("DATABASE OPERATION", "DATABASE CREATED");

}

@Override

public void onCreate(SQLiteDatabase db) {

data=db;

db.execSQL("CREATE TABLE " + TABLE_NAME + " ("

+ NAME + " TEXT,"

+ FATHER_NAME + " TEXT,"

+ MOTHER_NAME + " INTEGER,"

+ ");");

Log.d("DATABASE OPERATION", "TABLE CREATED");

}

public void open() throws SQLException

{

DBHelper db1 = new DBHelper(ctx);

data = db1.getWritableDatabase();

}

public void close()

{

data.close();

}

@Override

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

db.execSQL("DROP TABLE IF EXCEPTION EXISTS");

onCreate(db);

}

public void onInsert(DBHelper db,String name,String f_name, String m_name)

{

SQLiteDatabase sql= db.getWritableDatabase();

ContentValues cv=new ContentValues();

cv.put("teacher_name",name);

cv.put("father_name", f_name);

cv.put("mother_name", m_name);

sql.insert(TABLE_NAME, null, cv);

Log.d("DATABASE OPERATION", "ONE ROW INSERTED.....");

}

}

和java文件为…

package com.example.databasetest;

import android.app.Activity;

import android.content.Context;

import android.os.Bundle;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.EditText;

import android.widget.Toast;

public class MainActivity extends Activity {

EditText NAME,FATHER,MOTHER,ID;

String name,father,mother,id;

int i=1;

Button save;

Context ctxx;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

NAME=(EditText)findViewById(R.id.name);

FATHER=(EditText)findViewById(R.id.father_name);

MOTHER=(EditText)findViewById(R.id.mother_name);

ID=(EditText)findViewById(R.id.emp_id);

save=(Button)findViewById(R.id.submit);

save.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

id=ID.getText().toString();

name=NAME.getText().toString();

father=FATHER.getText().toString();

mother=MOTHER.getText().toString();

if(id.equals(i))

{

Toast.makeText(getBaseContext(), "not allow insertion", Toast.LENGTH_LONG).show();

}

else

{

DBHelper DB=new DBHelper(ctxx);

DB.open();

DB.onInsert(DB, name, father, mother);

Toast.makeText(getBaseContext(), "insertion sucessful", Toast.LENGTH_LONG).show();

finish();

}

}

});

}

}

当我单击日志猫中的按钮时,它及其显示运行时错误..

05-08 02:54:05.932: D/AndroidRuntime(922): Shutting down VM

05-08 02:54:05.999: W/dalvikvm(922): threadid=1: thread exiting with uncaught exception (group=0x41465700)

05-08 02:54:06.189: E/AndroidRuntime(922): FATAL EXCEPTION: main

05-08 02:54:06.189: E/AndroidRuntime(922): java.lang.NullPointerException

05-08 02:54:06.189: E/AndroidRuntime(922): at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:224)

05-08 02:54:06.189: E/AndroidRuntime(922): at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:164)

05-08 02:54:06.189: E/AndroidRuntime(922): at com.example.databasetest.DBHelper.(DBHelper.java:22)

05-08 02:54:06.189: E/AndroidRuntime(922): at com.example.databasetest.MainActivity$1.onClick(MainActivity.java:49)

05-08 02:54:06.189: E/AndroidRuntime(922): at android.view.View.performClick(View.java:4240)

05-08 02:54:06.189: E/AndroidRuntime(922): at android.view.View$PerformClick.run(View.java:17721)

05-08 02:54:06.189: E/AndroidRuntime(922): at android.os.Handler.handleCallback(Handler.java:730)

05-08 02:54:06.189: E/AndroidRuntime(922): at android.os.Handler.dispatchMessage(Handler.java:92)

05-08 02:54:06.189: E/AndroidRuntime(922): at android.os.Looper.loop(Looper.java:137)

05-08 02:54:06.189: E/AndroidRuntime(922): at android.app.ActivityThread.main(ActivityThread.java:5103)

05-08 02:54:06.189: E/AndroidRuntime(922): at java.lang.reflect.Method.invokeNative(Native Method)

05-08 02:54:06.189: E/AndroidRuntime(922): at java.lang.reflect.Method.invoke(Method.java:525)

05-08 02:54:06.189: E/AndroidRuntime(922): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)

05-08 02:54:06.189: E/AndroidRuntime(922): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)

05-08 02:54:06.189: E/AndroidRuntime(922): at dalvik.system.NativeStart.main(Native Method)

05-08 02:54:09.589: I/Process(922): Sending signal. PID: 922 SIG: 9

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP