【发布时间】: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 ');"" 不知道这里的语法错误是什么,和教程一样。
标签: java android sql sqlite android-studio