Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 启动活动并上载数据库时出错_Java_Android_Database_Android Activity_Android Sqlite - Fatal编程技术网

Java 启动活动并上载数据库时出错

Java 启动活动并上载数据库时出错,java,android,database,android-activity,android-sqlite,Java,Android,Database,Android Activity,Android Sqlite,当我点击一个按钮时,我开始一个新的活动,名为Profilo.java。我的代码是: 包com.example.prenotazione_esame 导入android.app.Activity;导入android.app.AlertDialog;进口 android.content.DialogInterface;导入android.database.Cursor; 导入android.database.sqlite.SQLiteDatabase;导入android.os.*; 导入androi

当我点击一个按钮时,我开始一个新的活动,名为Profilo.java。我的代码是:

包com.example.prenotazione_esame

导入android.app.Activity;导入android.app.AlertDialog;进口 android.content.DialogInterface;导入android.database.Cursor; 导入android.database.sqlite.SQLiteDatabase;导入android.os.*; 导入android.view.Menu;导入android.view.MenuItem;进口 android.widget.Button;导入android.widget.EditText;进口 android.view.view;导入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 
     } 
}
问题是当我尝试获取数据库数据库数据库时。我的应用程序崩溃了。
问题出在哪里?

您需要对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

这次我有一个错误:构造函数登录数据库未定义。什么意思?谢谢。这意味着类LoginDataBase有一个不同于“=new LoginDataBase(这是“NAMEOFDATABASE”,null,1)”的构造函数,或者没有任何构造函数。使两者具有相同的字段。P.D.Post LoginDataBase Constructor或Post LoginDataBase.java。非常感谢。