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 只被调用一次,要检查它是否正常工作,卸载并重新安装应用程序或在测试前清除它的数据
我正在尝试创建一个数据库,但我的代码没有任何反应。我知道这个问题很基础,但我是一个新手,所以我无法解决我的问题,所以请帮助我。
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 只被调用一次,要检查它是否正常工作,卸载并重新安装应用程序或在测试前清除它的数据