SQL插入查询不按按钮存储

Posted

技术标签:

【中文标题】SQL插入查询不按按钮存储【英文标题】:SQL Insert query not storing upon button press 【发布时间】:2021-09-07 01:24:36 【问题描述】:

我正在创建一个可以通过应用程序读取和修改数据库的项目。插入部分的教程让我迷失了。使用小写来开始一个单词会导致语法错误,很好。但是,当首字母大写时,它被接受。然后页面关闭并带您返回主菜单,而不会显示任何错误。 但是,与我的导师教程不同,我添加的记录不会显示在列表视图中。因此,如果有人可以帮助我了解我哪里出错了,将不胜感激!

插入活动:

package com.example.filmapp;

import androidx.appcompat.app.AppCompatActivity;

import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class InsertRecordActivity extends AppCompatActivity


    OpenDatabase sqh;
    SQLiteDatabase sqdb;

    EditText filmTitleEditTextInsert;
    EditText genreEditTextInsert;
    EditText roleEditTextInsert;
    EditText yearEditTextInsert;
    EditText ratingEditTextInsert;

    Button insertButtonInsert;
    Button cancelButtonInsert;

    @Override
    protected void onCreate(Bundle savedInstanceState)
    
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_insert_record);

        InitDatabase();

        setupControls();

     // protected void onCreate(Bundle savedInstanceState)

    public void InitDatabase()
    
        //Initialize SQLite Helper Class
        sqh = new OpenDatabase(this);

        //Retrieve read/writeable database
        sqdb = sqh.getWritableDatabase();

     //  public void InitDatabase()

    protected void setupControls()
    
       filmTitleEditTextInsert = findViewById(R.id.fimTitleEditTextInsert);
        genreEditTextInsert = findViewById(R.id.genreEditTextInsert);
        roleEditTextInsert = findViewById(R.id.roleEditTextInsert);
        yearEditTextInsert = findViewById(R.id.yearEditTextInsert);
        ratingEditTextInsert = findViewById(R.id.ratingEditTextInsert);

        insertButtonInsert = findViewById(R.id.insertButtonInsert);
        insertButtonInsert.setOnClickListener(new View.OnClickListener()
        
            @Override
            public void onClick(View v)
            
                sqh.insertRecordIntoFilmography( sqdb, filmTitleEditTextInsert.getText().toString(),
                        genreEditTextInsert.getText().toString(),
                        roleEditTextInsert.getText().toString(),
                        yearEditTextInsert.getText().toString(),
                        ratingEditTextInsert.getText().toString());
                finish();;

            
        );

        cancelButtonInsert = findViewById(R.id.cancelButtonInsert);
        cancelButtonInsert.setOnClickListener(new View.OnClickListener()
        
            @Override
            public void onClick(View v)
            
                finish();

            
        );

     // protected void setupControls()

 // public class InsertRecordActivity extends AppCompatActivity 

在 OpenDatabase 类中插入函数。

public void insertRecordIntoFilmography(SQLiteDatabase sqdb, String filmTitle, String genre, String role,
                                            String year, String imdbRating)
    
        String insertQuery = "INSERT INTO FilmTable(filmTitle, genre, role, year, imdbRating) ";
        insertQuery = insertQuery + "VALUES ('" + filmTitle + "',";
        insertQuery = insertQuery + " '" + genre + " '";
        insertQuery = insertQuery + " '" + role + " '";
        insertQuery = insertQuery + " '" + year + " '";
        insertQuery = insertQuery + " '" + imdbRating + " ');";

        sqdb.execSQL(insertQuery);

     //  public void insertRecordIntoFilmography(SQLiteDatabase sqdb, String filmTitle, String genre, String role, String year, String imdbRating)

【问题讨论】:

意识到是从错误的表调用。但是,仍然收到语法错误? "E/SQLiteLog: (1) 在"'Role'"附近:"INSERT INTO filmography(filmTitle、genre、role、year、imdbRating) VALUES ('Film'、'Genre') 中的语法错误'Role ' 'Year ' 'Ratiung ');"" 不知道这里的语法错误是什么,和教程一样。 【参考方案1】:

每个值后面都缺少,。 (“电影”、“类型”、“角色”、“年份”、“Ratiung”)More info

【讨论】:

非常感谢!一直把我逼疯了。

以上是关于SQL插入查询不按按钮存储的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 SQL Server 中的存储过程在单个查询中插入多行

PHP:如果用户未按下提交按钮,Mysql 回滚多个查询(通过 ajax 完成)

SQL 存储过程查询以清除日期字段(如果为 NULL)

Mysql慢查询开启和查看 ,存储过程批量插入1000万条记录进行慢查询测试

SQL(SQL/Oracle)使用序列从选择语句中插入值

VB.Net/Access SQL 插入子查询问题