Android 每当我试图打开sqlite数据库时,我的应用程序就会崩溃
您好,我正在为大学学生开发一个应用程序&我正在尝试添加sqlite数据库,但当我尝试向数据库中插入数据时,例如当我按下“注册”按钮时,应用程序崩溃了。实际上,我是android世界的新手。我正在看一些教程,想知道该怎么做>>>我不知道是什么错误 希望有人能帮助我 这是我的密码 这是openhelperAndroid 每当我试图打开sqlite数据库时,我的应用程序就会崩溃,android,sqlite,Android,Sqlite,您好,我正在为大学学生开发一个应用程序&我正在尝试添加sqlite数据库,但当我尝试向数据库中插入数据时,例如当我按下“注册”按钮时,应用程序崩溃了。实际上,我是android世界的新手。我正在看一些教程,想知道该怎么做>>>我不知道是什么错误 希望有人能帮助我 这是我的密码 这是openhelper public class DataBaseopretions extends SQLiteOpenHelper { public static final int database_version
public class DataBaseopretions extends SQLiteOpenHelper {
public static final int database_version=1;
public String CREATE_QUERY="CREATE_TABLE"+Tableinfo.TABLE_NAME+"("+ Tableinfo.ST_ID +" TEXT,"
+ Tableinfo.ST_pass + " TEXT);";
public DataBaseopretions(Context context) {
super(context, Tableinfo.TABLE_NAME , null, database_version);
// TODO Auto-generated constructor stub
Log.d("Database opreations", " database created");
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
db.execSQL(CREATE_QUERY);
Log.d("Database opreations", " table created");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
}
public void putinformation(DataBaseopretions dop ,String st_id ,String pass){
SQLiteDatabase SQ=dop.getWritableDatabase();
ContentValues CV=new ContentValues();
CV.put(Tableinfo.ST_ID, st_id);
CV.put(Tableinfo.ST_pass, pass);
long k= SQ.insert(Tableinfo.TABLE_NAME, null, CV);
Log.d("Database opreation", "one row insearted");
}
}
这是我创建数据库的地方
public class Tabledata {
public Tabledata(){
}
public static abstract class Tableinfo implements BaseColumns {
public static final String ST_ID="studentId";
public static final String ST_pass="pass";
public static final String DATABASE_NAME="colleg";
public static final String TABLE_NAME="student";
}
}
n这是登记表
public class Rigstretion extends Activity {
EditText st_id , st_pass, Pass_again;
String student_id ,pass_ag ,pass;
Button regs, cancel_reg;
Context cxt;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.registor);
st_id=(EditText)findViewById(R.id.st_id);
st_pass=(EditText)findViewById(R.id.st_pass);
Pass_again=(EditText)findViewById(R.id.pass_again);
regs=(Button)findViewById (R.id.regs) ;
cancel_reg=(Button) findViewById(R.id.cancel_reg);
regs.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
student_id=st_id.getText().toString();
pass=st_pass.getText().toString();
pass_ag=Pass_again.getText().toString();
if(!(pass.equals(pass_ag)))
{
Toast.makeText(getBaseContext(), "Password not match", Toast.LENGTH_LONG).show();
st_id.setText("");
st_pass.setText("");
Pass_again.setText("");
}
else
{
DataBaseopretions db =new DataBaseopretions(cxt);
db.putinformation(db, student_id, pass);
Toast.makeText(getBaseContext(), "Registrtion success", Toast.LENGTH_LONG).show();
finish();
}
}
});
}
&这是logcat
10-15 08:49:05.477: W/SocketClient(110): write error (Broken pipe)
10-15 08:49:06.213: D/OpenGLRenderer(1057): TextureCache::get: create texture(0xb804b280): name, size, mSize = 185, 3328, 1618848
10-15 08:49:06.281: W/audio_hw_primary(116): out_write() limiting sleep time 46802 to 39909
10-15 08:49:06.285: D/Database opreations(1057): database created
10-15 08:49:06.285: D/AndroidRuntime(1057): Shutting down VM
10-15 08:49:06.285: W/dalvikvm(1057): threadid=1: thread exiting with uncaught exception (group=0xa6265288)
10-15 08:49:06.293: E/AndroidRuntime(1057): FATAL EXCEPTION: main
10-15 08:49:06.293: E/AndroidRuntime(1057): java.lang.NullPointerException
10-15 08:49:06.293: E/AndroidRuntime(1057): at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:224)
10-15 08:49:06.293: E/AndroidRuntime(1057): at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:164)
10-15 08:49:06.293: E/AndroidRuntime(1057): at za.example.drawer.DataBaseopretions.putinformation(DataBaseopretions.java:40)
10-15 08:49:06.293: E/AndroidRuntime(1057): at za.example.drawer.Rigstretion$1.onClick(Rigstretion.java:48)
10-15 08:49:06.293: E/AndroidRuntime(1057): at android.view.View.performClick(View.java:4084)
10-15 08:49:06.293: E/AndroidRuntime(1057): at android.view.View$PerformClick.run(View.java:16966)
10-15 08:49:06.293: E/AndroidRuntime(1057): at android.os.Handler.handleCallback(Handler.java:615)
10-15 08:49:06.293: E/AndroidRuntime(1057): at android.os.Handler.dispatchMessage(Handler.java:92)
10-15 08:49:06.293: E/AndroidRuntime(1057): at android.os.Looper.loop(Looper.java:137)
10-15 08:49:06.293: E/AndroidRuntime(1057): at android.app.ActivityThread.main(ActivityThread.java:4745)
10-15 08:49:06.293: E/AndroidRuntime(1057): at java.lang.reflect.Method.invokeNative(Native Method)
10-15 08:49:06.293: E/AndroidRuntime(1057): at java.lang.reflect.Method.invoke(Method.java:511)
10-15 08:49:06.293: E/AndroidRuntime(1057): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
10-15 08:49:06.293: E/AndroidRuntime(1057): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
10-15 08:49:06.293: E/AndroidRuntime(1057): at dalvik.system.NativeStart.main(Native Method)
10-15 08:49:06.293: W/ActivityManager(394): Force finishing activity za.example.drawer/.Rigstretion
10-15 08:49:06.341: E/SocketStream(437): readFully was waiting for 275772 bytes, got 49152
10-15 08:49:06.341: E/SocketStream(437): readFully was waiting for 226620 bytes, got 49152
10-15 08:49:06.345: E/SocketStream(437): readFully was waiting for 177468 bytes, got 49152
10-15 08:49:06.345: E/SocketStream(437): readFully was waiting for 128316 bytes, got 49152
10-15 08:49:06.345: E/SocketStream(437): readFully was waiting for 79164 bytes, got 492
10-15 08:49:06.349: E/SocketStream(437): readFully was waiting for 78672 bytes, got 49152
10-15 08:49:06.353: E/SocketStream(437): readFully was waiting for 29520 bytes, got 16384
10-15 08:49:06.357: W/audio_hw_primary(116): out_write() limiting sleep time 59274 to 39909
10-15 08:49:06.365: W/audio_hw_primary(116): out_write() limiting sleep time 49591 to 39909
10-15 08:49:06.377: D/dalvikvm(394): GC_FOR_ALLOC freed 494K, 9% free 9185K/10055K, paused 14ms, total 17ms
10-15 08:49:06.417: W/audio_hw_primary(116): out_write() limiting sleep time 69546 to 39909
10-15 08:49:06.453: W/audio_hw_primary(116): out_write() limiting sleep time 79501 to 39909
10-15 08:49:06.493: D/(394): HostConnection::get() New Host Connection established 0xb7f9c4b8, tid 408
10-15 08:49:06.493: W/audio_hw_primary(116): out_write() limiting sleep time 59455 to 39909
10-15 08:49:06.881: W/ActivityManager(394): Activity pause timeout for ActivityRecord{5358f428 za.example.drawer/.Rigstretion}
10-15 08:49:16.385: W/ActivityManager(394): Launch timeout has expired, giving up wake lock!
10-15 08:49:16.893: W/ActivityManager(394): Activity idle timeout for ActivityRecord{535c3ef0 za.example.drawer/.MainActivity}
10-15 08:49:31.553: W/ThrottleService(394): unable to find stats for iface rmnet0
10-15 08:49:31.561: W/SocketClient(110): write error (Broken pipe)
10-15 08:49:32.805: D/OpenGLRenderer(510): TextureCache::get: create texture(0xb8101c90): name, size, mSize = 51, 1440, 162152
10-15 08:50:05.497: W/SocketClient(110): write error (Broken pipe)
我在寻找解决方案,但什么都没用。。。提前感谢^添加
ctx=this;
在onCreate()方法中。
cxt
var未初始化,因此null作为参数传递给newDatabaseOperations
。无论如何,cxt
是无用的,就这样做吧:
DataBaseopretions db =new DataBaseopretions(Rigstretion.this);
谢谢伙计们我发现了错误所在。。它位于
oncreate()
我所做的只是在公共类数据库操作扩展SQLiteOpenHelper
中删除CREATE\u QUERY
,并在onecreate()
方法中编写CREATE table语句
像这样就行了
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
db.execSQL("CREATE TABLE " + Tableinfo.DATABASE_TABLE + " (" + Tableinfo.ST_ID + " INTEGER PRIMARY KEY , " +
Tableinfo.ST_PASS +" TEXT NOT NULL, " + Tableinfo.PASS_AG + " TEXT NOT NULL ); "
);
您的
cxt
为空。堆栈跟踪是否完全相同?