SQLite 数据库创建

SQLite Datebase Creation

我正在尝试创建一个数据库,但我的代码没有任何反应。我知道这个问题很基础,但我是一个新手,所以我无法解决我的问题,所以请帮助我。

public class DatabaseHelper extends SQLiteOpenHelper {
    private static final String DATABASE_NAME="employeedb";
    private static final String TABLE_NAME="EMPLOYEETABLE";
    private static final int DATABASE_VERSION=1;
    private static final String EID="_id";
    private static final String NAME="Name";
    private static final String CREATE_TABLE="CREATE TABLE "+TABLE_NAME+" ("+EID+" INTEGER PRIMARY AUTOINCREMENT, "+NAME+" VARCHAR(255))";
    private static final  String DROP_TABLE="DROP TABLE "+TABLE_NAME+"IF EXISTS";
    private Context context;
    public DatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
        this.context = context;
        Message.message(context, "Constructor called.");
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        try {
            Message.message(context, "onCreate called.");
            db.execSQL(CREATE_TABLE);
        }
        catch (Exception e)
        {
            Message.message(context, ""+e);
        }
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        try {
            Message.message(context, "onUpgrade called.");
            db.execSQL(DROP_TABLE);
            onCreate(db);
        } catch (SQLException e) {
            Message.message(context, ""+e);
        }
    }
}

这里是消息Class,只有一种方法

public class Message {
    public static void message(Context context, String message){
        Toast.makeText(context,message,Toast.LENGTH_SHORT);

    }
}

这是我调用 getWritabeDatase 方法的 MainActivity 代码。

public class MainActivity extends Activity implements MyDialog.Communicator {
    LinearLayout layout;
    TextView txt;
    TextView date;
    DatabaseHelper dbhelper;
    @Override
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        layout = (LinearLayout) findViewById(R.id.layoutbottom);
        date = (TextView) findViewById(R.id.date);
        txt =(TextView) findViewById(R.id.title);
        GeneralMethods generalmethods = new GeneralMethods(this,this);
        dbhelper = new DatabaseHelper(this);
        SQLiteDatabase sqLiteDatabase = dbhelper.getWritableDatabase();
    }
    public void showDialog(View v){
        FragmentManager manager = getFragmentManager();
        MyDialog myDialog = new MyDialog();
        myDialog.show(manager,"MyDialog");
    }
    @Override
    public void onDialogueMessage(String message) {
        date.setText(message);
    }
}

当您第一次使用帮助程序访问数据库时,您的 onCreate 将被调用。

任何对

的调用
getReadableDatabase() or getWritableDatabase()

将导致 onCreate 被触发,并且仅在那时被触发。当您更改现有架构的数据库版本时,您的 onUpgrade 将触发。

此外,根据 SQLite 文档,整数主键将自动递增到它自己的 max+1 值。

添加自动增量会导致不必要的显式开销并更改 rowid 选择算法,他们不推荐这样做。

您在留言中忘记了 toast 的 show() class

Toast.makeText(context,message,Toast.LENGTH_SHORT).show();

基本上没有 show(),Toast 将不会显示,只会被创建。现在由于 onCreate 只被调用一次,要检查它是否正常工作,卸载并重新安装应用程序或在测试前清除它的数据