当我点击Button时,我开始一项名为Profilo.java的新活动。我的代码是:
package com.example.prenotazione_esame;
import android.app.Activity; import android.app.AlertDialog;进口 android.content.DialogInterface; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os。*; import android.view.Menu; import android.view.MenuItem;进口 android.widget.Button; import android.widget.EditText;进口 android.view.View; import android.view.View.OnClickListener;进口 android.widget.Toast;
public class Profilo extends Activity { private LoginDataBase dbLogin; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); int id = getIntent().getExtras().getInt("id"); setContentView(R.layout.profilo); SQLiteDatabase db = dbLogin.getWritableDatabase(); }
}
此LoginDataBase.java
public class LoginDataBase extends SQLiteOpenHelper {
private static final String DB_NAME="Login_DB";
private static final int DB_VERSION=1;
public LoginDataBase(Context context){
super(context,DB_NAME,null,DB_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
String sql="";
sql+= "CREATE TABLE T_LOGIN (";
sql+= " _id_LOGIN INTEGER PRIMARY KEY AUTOINCREMENT,";
sql+= " USERNAME TEXT NOT NULL,";
sql+= " PASSWORD TEXT NOT NULL";
sql+=")";
db.execSQL(sql);
String sql2="";
sql2+= "CREATE TABLE T_PROFILO (";
sql2+= " _id_PROFILO INTEGER PRIMARY KEY AUTOINCREMENT,";
sql2+= " NOME TEXT NOT NULL,";
sql2+= " COGNOME TEXT NOT NULL,";
sql2+= " ETA TEXT NOT NULL,";
sql2+= " SESSO TEXT(1) NOT NULL,";
sql2+= " CODICE_FISCALE TEXT NOT NULL,";
sql2+= " CITTA TEXT NOT NULL,";
sql2+= " INDIRIZZO TEXT NOT NULL,";
sql2+= " TELEFONO TEXT NOT NULL,";
sql2+= " _id_L INTEGER NOT NULL,";
sql2+= " FOREIGN KEY(_id_L) REFERENCES T_LOGIN(_id_LOGIN)";
sql2+= ")";
db.execSQL(sql2);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// Aggiornamento delle tabelle
}
}
问题是当我尝试使用我的数据库db时。我的应用崩溃了。 问题在哪里?
答案 0 :(得分:1)
您需要对dbLogin进行初始化。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
int id = getIntent().getExtras().getInt("id");
setContentView(R.layout.profilo);
///NEW
LoginDataBase dbLogin = new LoginDataBase (this, "NAMEOFDATABASE", null, 1);
///END OF NEW
SQLiteDatabase db = dbLogin.getWritableDatabase();
}
}
您的类LoginDataBase必须具有与此类似的构造函数:
public class LoginDataBase extends SQLiteOpenHelper {
private static final String DB_NAME="Login_DB";
private static final int DB_VERSION=1;
public LoginDataBase (Context contexto, String name,
CursorFactory factory, int version) {
super(contexto, name, factory, version);
}
或者您也可以更改此设置并继续使用构造函数:
///NEW
LoginDataBase dbLogin = new LoginDataBase (this);
///END OF NEW