【问题标题】:Error when start activity and upload Database启动活动和上传数据库时出错
【发布时间】:2014-05-12 16:16:31
【问题描述】:

当我单击一个按钮时,我开始了一个名为 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.查看;导入 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 
     } 
}

问题是当我尝试获取我的数据库数据库时。我的应用程序崩溃。 问题出在哪里?

【问题讨论】:

    标签: java android database android-activity android-sqlite


    【解决方案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
    

    【讨论】:

    • 我这次报错:构造函数LoginDataBase未定义。什么意思?谢谢。
    • 表示类 LoginDataBase 有一个不同于“= new LoginDataBase (this, "NAMEOFDATABASE", null, 1)" 的构造函数或者没有任何构造函数。使两者具有相同的字段。 PD发布 LoginDataBase 构造函数
    • 我发布了 LoginDataBase.java。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-14
    • 2016-07-07
    相关资源
    最近更新 更多