Android:如何写入SQL数据库

2023-11-30

我一直在尝试遵循 newBoston 教程,但当我单击按钮将数据写入数据库时​​,发现出现运行时错误。 LogCat 显示“在活动中找不到方法 addModuleButton(View)。

有什么建议么?

添加模块活动

    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();
                    }


                    }

                }
}

数据库类

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 显示“在活动中找不到方法 addModuleButton(View)”。

您的按钮似乎使用了 XML 属性android:onClick="addModuleButton",所以只需更改此:

public void onClick (View addModuleButton) 

进入这个:

public void addModuleButton (View view)

来自onClick文档:

该名称必须对应于一种仅采用一个 View 类型参数的公共方法。例如,如果您指定android:onClick="sayHello",你必须声明一个public void sayHello(View v)您的上下文(通常是您的 Activity)的方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android:如何写入SQL数据库 的相关文章

  • Cheesesquare:enterAlways 会产生错误的布局

    Adding enterAlways到 Cheesesquare 演示的滚动标志
  • 从响应中获取标头(Retrofit / OkHttp 客户端)

    我正在使用 Retrofit 与 OkHttp 客户端和 Jackson 进行 Json 序列化 并希望获取响应的标头 我知道我可以扩展 OkClient 并拦截它 但这发生在反序列化过程开始之前 我基本上需要的是获取标头以及反序列化的 J
  • 如何正确释放Android MediaPlayer

    我正在尝试向我的 Android 应用程序添加一个按钮 当点击该按钮时它会播放 MP3 我已经让它工作了 但没有办法释放 mediaPlayer 对象 因此即使在我离开活动后它仍然会继续播放 如果我在react 方法之外初始化MediaPl
  • 按下按钮时应用不同的样式

    有没有办法在按下按钮时将样式应用于按钮 如果我有一种风格样式 xml
  • Android Q:file.mkdirs() 返回 false

    我们有一个应用程序 使用外部存储来存储一些临时文件 图像 二进制数据 该代码已经运行了几年 直到最近才发生重大变化 在 Android Q 上它不起作用 File f new File Environment getExternalStor
  • 无法在 Sqlite3 中添加默认值为 NULL 的 NOT NULL 列

    尝试将 NOT NULL 列添加到现有表时出现以下错误 为什么会发生这种情况 我尝试了 rake db reset 认为现有记录是问题所在 但即使重置数据库后 问题仍然存在 你能帮我解决这个问题吗 迁移文件 class AddDivisio
  • 如何在 iPhone 上使用带有线程的 sqlite + fdbm 库

    相关这个问题 https stackoverflow com questions 1082554 我想把数据加载放在后台 但是 我收到 库例程调用不按顺序 错误 In 这个所以线程 https stackoverflow com quest
  • 如何更改终端的默认目录?

    我想更改 Android Studio v2 2 2 终端的默认目录 当我打开终端时 它基于项目的目录 C 项目路径 我经常需要使用adb shell 所以我必须导航到 SDK 路径 平台工具 才能使用 adb 命令 是否可以更改终端的默认
  • 在 Cordova 应用程序中获取额外功能

    我们有两个 Android 应用程序 一个使用本机 Java 实现 另一个使用 Ionic 编写 Ionic 应用程序启动我的应用程序 这是使用灯插件 https github com lampaa com lampa startapp 我
  • ExoPlayer2 - 如何使 HTTP 301 重定向工作?

    我开始使用 ExoPlayer 来传输一些音频 一切都很顺利 直到我遇到一个带有 301 永久移动 重定向的 URL ExoPlayer2 默认情况下不处理该问题 我已经看过这个线程 https github com google ExoP
  • 提交后禁用按钮

    当用户提交付款表单并且发布表单的代码导致 Firefox 中出现重复发布时 我试图禁用按钮 去掉代码就不会出现这个问题 在firefox以外的任何浏览器中也不会出现这个问题 知道如何防止双重帖子吗 System Text StringBui
  • okhttp 获取失败响应

    我已经在我的 android 客户端中实现了 okhttp 来进行网络调用 当我收到失败响应时 我会收到失败代码以及与该代码相关的文本作为消息 但我没有收到服务器发送给我的自定义失败响应 在我实施的代码中的失败响应中 我收到的消息只是 错误
  • OnLongClickListener 不工作

    我有一个ImageView 我需要使用onLongClickListener对于图像视图 当我使用这段代码时 什么也没有发生 Code gallery Gallery findViewById R id gall1 gallery setA
  • 如何在 Android 中从 WorkManager 取消工作?

    我已经保存了 WorkManagerUUID转换成String在领域数据库中 这是代码 Constraints constraints new Constraints Builder setRequiredNetworkType Netwo
  • Android Studio 缓慢的增量构建

    我已经完成了许多步骤来完善我们的构建系统 those https stackoverflow com questions 16775197 building and running app via gradle and android st
  • Android 如何将总天数准确更改为年、月、日?

    我正在做一个应用程序 该应用程序与根据给定的生日日期输入获取一个人的年龄有关 为此 我从下面的代码中获取从该日期到当前日期的总天数 String strThatDay 1991 05 10 SimpleDateFormat formatte
  • 上网本上可以进行Android开发吗? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我想使用我的上网本进行 Android 开发 但是当我尝试使用 Eclipse 运行 SDK 时 没有加载任何内容 上网本对于 Android 开发来
  • 没有用于警告的设置器/字段 Firebase 数据库检索数据填充列表视图

    我只是想将 Firebase 数据库中的数据填充到我的列表视图中 日志显示正在检索数据 但适配器不会将值设置为列表中单个列表项中的文本 它只说 没有二传手 场地插入值 这让我觉得我的设置器没有正确制作 但 Android Studio 自动
  • 在virtualenv中下载sqlite3

    我正在尝试使用命令创建应用程序python3 manage py startapp webapp但我收到一条错误消息 django core exceptions ImproperlyConfigured 加载时出错 pysqlite2 或
  • 在 Android 应用程序资源中使用 JSON 文件

    假设我的应用程序的原始资源文件夹中有一个包含 JSON 内容的文件 我如何将其读入应用程序 以便我可以解析 JSON See 开放原始资源 http developer android com reference android conte

随机推荐

  • 尝试从带有 URL () 的框架加载 URL () 是不安全的

    watch html 1 Unsafe attempt to load URL file C subtitle vtt from frame with URL file C watch html file URLs are treated
  • Dask Workers 有哪些活动线程?

    当运行 Dask 工作线程时 我注意到有一些额外的线程超出了我的预期 我应该看到 Dask Worker 运行多少个线程以及它们在做什么 Dask 工作线程有以下线程 用于运行任务的线程池 这通常介于 1 和计算机上逻辑核心的数量之间 一个
  • 排除错误消息中前置的属性名称

    我有一个简单的国际化 attributes user login Login errors template header Errors body models user attributes login taken The chosen
  • Gtk:如何检测EventBox上的鼠标位置?

    I have been trying to write simple CAD application in Python I was tinkering with pyglet got some results but I decided
  • 如何在 R corrgram 中添加轴标签?

    我想在 x 轴和 y 轴上有水平和垂直标签 请参阅以下伪代码 Henrik 对相关线程 2013 的评论是关于关闭对角线标签 然后尝试关联轴的标签 但我不想关闭对角线标签 您可以通过设置 labels NULL 来关闭对角线标签 然后您可以
  • 使用服务主体创建 Azure AD 应用程序时权限不足,无法完成操作

    按照此处概述的代码进行操作 https github com Azure Samples active directory dotnet graphapi console blob master GraphConsoleAppV3 Prog
  • 将纬度和经度点转换为 UTM

    我找到了一个相当简单的示例来说明如何执行此操作 但我无法让它为我工作 我对 R 还很陌生 library rgdal xy lt cbind c 118 119 c 10 50 project xy proj utm zone 51 ell
  • SmtpClient 类未从 Web.Config 文件中获取默认参数

    配置文件
  • 在 Ember.js #each 中生成循环计数器

    我发现 Ember js 中车把模板的限制绝对是严重的 你不能执行任意的 JavaScript 您获得的只是一组固定的能力 if else each action view outlet 以及输出当前上下文对象的属性值的能力 这意味着我无法
  • Java 线程优先级

    我的主线程有一个私有 LinkedList 其中包含游戏中玩家的任务对象 然后 我有一个单独的线程 每小时运行一次 用于访问和清除该 LinkedList 并运行我的算法 该算法随机向每个玩家 LinkedList 添加新的未完成任务 现在
  • 在Scrapy中禁用SSL证书验证

    我目前正在努力解决 Scrapy 遇到的问题 每当我使用 Scrapy 抓取证书 CN 值与服务器域名相匹配的 HTTPS 站点时 Scrapy 都表现出色 但另一方面 每当我尝试抓取证书 CN 值与服务器域名不匹配的网站时 我都会得到以下
  • 当子类中使用“new”时,JavascriptSerializer 序列化属性两次

    尝试创建一项服务来返回具有许多共享属性的对象 但在某些情况下一个属性应该受到高度限制 这会导致奇怪且不期望的行为 即在序列化输出中重复使用属性名称 从而导致浏览器中出现不正确的行为 这是一个可以粘贴到 LINQPad 中的示例 如果您添加对
  • 使用刷新令牌 adal js 获取新的访问令牌

    我正在使用在天蓝色广告中进行身份验证的应用程序 我使用 adal js 获取访问令牌 但访问令牌的有效期仅为 1 小时 那么如何使用 Adal js 中的刷新令牌在幕后获取新令牌呢 如果您能提供示例代码 我们将不胜感激 只要用户与 Azur
  • JMeter无法使用插件打开JMeter文件

    当我尝试打开保存的 jmx 时出现错误 我的备份已经一周了 我尝试遵循类似的问题 但也无法使用 JMeter 3 1 加载它 我安装了新的 JMeter 3 2 并安装了所有可用插件的插件 但仍然收到错误 2017 08 30 10 03
  • 使用 NSNotificationCenter 向另一个类发送通知

    所以我的目标是使用以下命令向另一个班级发送通知NSNotificationCenter 我也想通过object并通知对方class 我该怎么做 您必须先注册一个通知名称 NSNotificationCenter defaultCenter
  • C 语言翻译的 8 个阶段的海报

    有没有人参考过海报 单页 pdf 或类似的内容 其中包含 C 语言翻译的八个阶段的列表 第一个阶段是三字母翻译 我想打印一张挂在电脑旁边的墙上 更新 抱歉忘记指定 我对 C90 感兴趣 虽然 C99 可能非常接近 Pragma正如 PMG
  • R:如何在 ggplotly 中自定义桑基图?

    我有按年份和型号划分的销售数据 可以通过以下方式可视化桑基图 现在我正在努力处理两个问题 首先我需要设置模型B多年来 无论其价值如何 总是处于闲聊的底部 当我通过重新可视化 ggplot 时ggplotly hover不显示销售额或年份 c
  • Jenkins 管道 ansicolor 控制台输出

    我知道可以使用 AnsiColor 插件在控制台输出中显示颜色 我测试了下面的基本示例 This shows a simple build wrapper example using the AnsiColor plugin node Th
  • Python 迭代器没有ext() 吗?

    Python 迭代器有吗hasnext method 捕捉的替代方案StopIteration是使用next iterator default value 例如 gt gt gt a iter hi gt gt gt print next
  • Android:如何写入SQL数据库

    我一直在尝试遵循 newBoston 教程 但当我单击按钮将数据写入数据库时 发现出现运行时错误 LogCat 显示 在活动中找不到方法 addModuleButton View 有什么建议么 添加模块活动 public class Add