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 完成)