Android的:如何写SQL数据库 [英] Android:How to write to SQL database

查看:119
本文介绍了Android的:如何写SQL数据库的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我一直在努力遵循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 a public void sayHello(View v) method of your context (typically, your Activity).

这篇关于Android的:如何写SQL数据库的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆