Android的:如何写SQL数据库 [英] Android:How to write to SQL database
问题描述
我一直在努力遵循newBoston教程,并发现自己与一个运行时错误,当我点击一个按钮,将数据写入到数据库。 LogCat中显示无法找到活动的方法addModuleButton(查看)。
有什么建议?
添加模块活性
公共类AddCourse扩展活动实现OnClickListener {
按钮sqlAddModule;
EditText上sqlModule code,sqlModuleName,sqlModuleType,sqlModuleDay,
sqlModuleStart,sqlModuleEnd,sqlModuleLocation,sqlModuleComments;
@覆盖
公共无效的onCreate(包savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.add_course);
sqlAddModule =(按钮)findViewById(R.id.addToDatabase);
sqlModule code =(EditText上)findViewById(R.id.labelEditModule code);
sqlModuleName =(EditText上)findViewById(R.id.labelEditModuleFull);
sqlModuleType =(EditText上)findViewById(R.id.labelCourseType);
sqlModuleDay =(EditText上)findViewById(R.id.labelDay);
// sqlModuleStart =(EditText上)findViewById(R.id.labelEditModule code);
// sqlModuleEnd =(EditText上)findViewById(R.id.labelEditModule code);
sqlModuleLocation =(EditText上)findViewById(R.id.labelEditModuleLocation);
sqlModuleComments =(EditText上)findViewById(R.id.labelEditModuleComments);
}
公共无效的onClick(查看addModuleButton)
{
布尔didItWork = TRUE;
尝试{
string模块code = sqlModule code.getText()的toString()。
。字符串模块名= sqlModuleName.getText()的toString();
。字符串moduleDay = sqlModuleDay.getText()的toString();
。字符串moduleType = sqlModuleType.getText()的toString();
字符串moduleLocation = sqlModuleLocation.getText()的toString()。
。字符串moduleComments = sqlModuleComments.getText()的toString();
数据库条目=新的数据库(AddCourse.this);
entry.open();
entry.createEntry(模块code,模块名,moduleType,moduleDay,moduleLocation,moduleComments);
entry.close();
}赶上(例外五){
didItWork = FALSE;
} {最后,如果(didItWork){
对话D =新的对话框(本);
d.setTitle(BooYa!);
TextView的电视=新的TextView(本);
tv.setText(成功);
d.setContentView(电视);
d.show();
}
}
}
}
数据库类
公共类的数据库{
公共静态最后弦乐KEY_ROWID =_id;
公共静态最后弦乐KEY_MODULE code =module_ code;
公共静态最后弦乐KEY_MODULENAME =MODULE_NAME;
公共静态最后弦乐KEY_MODULETYPE =的module_type;
公共静态最后弦乐KEY_MODULEDAY =module_day;
公共静态最后弦乐KEY_MODULESTART =module_start;
公共静态最后弦乐KEY_MODULEEND =module_end;
公共静态最后弦乐KEY_MODULELOCATION =module_location;
公共静态最后弦乐KEY_MODULECOMMENTS =module_comments;
私有静态最后弦乐DATABASE_NAME =module_database;
私有静态最后弦乐DATABASE_TABLE =my_modules;
私有静态最终诠释DATABASE_VERSION = 1;
私人DbHelper myHelper;
私人最终语境myContext;
私人SQLiteDatabase moduleDatabase;
私有静态类DbHelper扩展SQLiteOpenHelper {
公共DbHelper(上下文的背景下){
超(背景下,DATABASE_NAME,空,DATABASE_VERSION);
}
@覆盖
公共无效的onCreate(SQLiteDatabase DB){
db.execSQL(CREATE TABLE+ DATABASE_TABLE +(+
KEY_ROWID +INTEGER PRIMARY KEY AUTOINCREMENT,+
KEY_MODULE code +TEXT NOT NULL,+
KEY_MODULENAME +TEXT NOT NULL,+
KEY_MODULETYPE +TEXT NOT NULL,+
KEY_MODULEDAY +TEXT NOT NULL,+
// KEY_MODULESTART +TEXT+
// KEY_MODULEEND +TEXT+
KEY_MODULELOCATION +TEXT NOT NULL,+
KEY_MODULECOMMENTS +TEXT NOT NULL,);
);
}
@覆盖
公共无效onUpgrade(SQLiteDatabase分贝,INT oldVersion,诠释静态网页){
// TODO自动生成方法存根
db.execSQL(DROP TABEL IF EXISTS+ DATABASE_TABLE);
的onCreate(DB);
}
}
公共数据库(上下文C){
myContext = C;
}
公共数据库的open()抛出的SQLException {
myHelper =新DbHelper(myContext);
moduleDatabase = myHelper.getWritableDatabase();
回到这一点;
}
公共无效的close(){
myHelper.close();
}
众长createEntry(string模块code,模块名字符串,字符串moduleType,
字符串moduleDay,字符串moduleLocation,字符串moduleComments){
ContentValues CV =新ContentValues();
cv.put(KEY_MODULE code,模块code);
cv.put(KEY_MODULENAME,模块名);
cv.put(KEY_MODULETYPE,moduleType);
cv.put(KEY_MODULEDAY,moduleDay);
cv.put(KEY_MODULELOCATION,moduleLocation);
cv.put(KEY_MODULECOMMENTS,moduleComments);
返回moduleDatabase.insert(DATABASE_TABLE,空,CV);
// TODO自动生成方法存根
}
}
LogCat中显示无法找到活动的方法addModuleButton(查看)。
您按钮似乎使用XML属性安卓的onClick =addModuleButton
,所以简单地改变这样的:
公共无效的onClick(查看addModuleButton)
这个:
公共无效addModuleButton(查看视图)
从 的onClick
文档:
这名必须对应于一个公共方法,它的类型查看正好一个参数。例如,如果您指定
安卓的onClick =sayHello的
,您必须声明公共无效的sayHello(视图v)
你的情况下(通常,你的Activity)的方法。
I have been trying to follow the newBoston tutorial and find myself with a runtime error when I click a button to write data to a database. LogCat displays "Could not find a method addModuleButton(View) in the activity.
Any suggestions?
Add module Activity
public class AddCourse extends Activity implements OnClickListener {
Button sqlAddModule;
EditText sqlModuleCode, sqlModuleName, sqlModuleType, sqlModuleDay,
sqlModuleStart, sqlModuleEnd, sqlModuleLocation, sqlModuleComments;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.add_course);
sqlAddModule= (Button)findViewById(R.id.addToDatabase);
sqlModuleCode = (EditText)findViewById(R.id.labelEditModuleCode);
sqlModuleName = (EditText)findViewById(R.id.labelEditModuleFull);
sqlModuleType = (EditText)findViewById(R.id.labelCourseType);
sqlModuleDay = (EditText)findViewById(R.id.labelDay);
//sqlModuleStart = (EditText)findViewById(R.id.labelEditModuleCode);
//sqlModuleEnd = (EditText)findViewById(R.id.labelEditModuleCode);
sqlModuleLocation = (EditText)findViewById(R.id.labelEditModuleLocation);
sqlModuleComments = (EditText)findViewById(R.id.labelEditModuleComments);
}
public void onClick (View addModuleButton)
{
boolean didItWork = true;
try{
String moduleCode = sqlModuleCode.getText().toString();
String moduleName = sqlModuleName.getText().toString();
String moduleDay = sqlModuleDay.getText().toString();
String moduleType = sqlModuleType.getText().toString();
String moduleLocation = sqlModuleLocation.getText().toString();
String moduleComments = sqlModuleComments.getText().toString();
database entry = new database(AddCourse.this);
entry.open();
entry.createEntry(moduleCode, moduleName,moduleType, moduleDay,moduleLocation, moduleComments);
entry.close();
}catch(Exception e){
didItWork = false;
}finally{ if(didItWork){
Dialog d = new Dialog(this) ;
d.setTitle("BooYa!");
TextView tv = new TextView(this);
tv.setText("Success");
d.setContentView(tv);
d.show();
}
}
}
}
Database Class
public class database {
public static final String KEY_ROWID = "_id";
public static final String KEY_MODULECODE = "module_code";
public static final String KEY_MODULENAME = "module_name";
public static final String KEY_MODULETYPE = "module_type";
public static final String KEY_MODULEDAY = "module_day";
public static final String KEY_MODULESTART = "module_start";
public static final String KEY_MODULEEND = "module_end";
public static final String KEY_MODULELOCATION = "module_location";
public static final String KEY_MODULECOMMENTS = "module_comments";
private static final String DATABASE_NAME = "module_database";
private static final String DATABASE_TABLE = "my_modules";
private static final int DATABASE_VERSION = 1;
private DbHelper myHelper;
private final Context myContext;
private SQLiteDatabase moduleDatabase;
private static class DbHelper extends SQLiteOpenHelper {
public DbHelper(Context context){
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE " + DATABASE_TABLE + " (" +
KEY_ROWID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
KEY_MODULECODE + " TEXT NOT NULL, " +
KEY_MODULENAME + " TEXT NOT NULL, " +
KEY_MODULETYPE + " TEXT NOT NULL, " +
KEY_MODULEDAY + " TEXT NOT NULL, " +
//KEY_MODULESTART + " TEXT, " +
//KEY_MODULEEND + " TEXT, " +
KEY_MODULELOCATION + " TEXT NOT NULL, " +
KEY_MODULECOMMENTS + " TEXT NOT NULL,);"
);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
db.execSQL("DROP TABEL IF EXISTS " + DATABASE_TABLE);
onCreate(db);
}
}
public database(Context c){
myContext = c;
}
public database open()throws SQLException{
myHelper = new DbHelper(myContext);
moduleDatabase = myHelper.getWritableDatabase();
return this;
}
public void close(){
myHelper.close();
}
public long createEntry(String moduleCode, String moduleName, String moduleType,
String moduleDay, String moduleLocation, String moduleComments) {
ContentValues cv = new ContentValues();
cv.put(KEY_MODULECODE,moduleCode);
cv.put(KEY_MODULENAME,moduleName);
cv.put(KEY_MODULETYPE,moduleType);
cv.put(KEY_MODULEDAY,moduleDay);
cv.put(KEY_MODULELOCATION,moduleLocation);
cv.put(KEY_MODULECOMMENTS,moduleComments);
return moduleDatabase.insert(DATABASE_TABLE,null,cv);
// TODO Auto-generated method stub
}
}
LogCat displays "Could not find a method addModuleButton(View) in the activity."
Your button seems to use the XML attribute android:onClick="addModuleButton"
, so simply change this:
public void onClick (View addModuleButton)
into this:
public void addModuleButton (View view)
From the onClick
documentation:
This name must correspond to a public method that takes exactly one parameter of type View. For instance, if you specify
android:onClick="sayHello"
, you must declare apublic void sayHello(View v)
method of your context (typically, your Activity).
这篇关于Android的:如何写SQL数据库的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!