gpt4 book ai didi

java - 错误 : Caused by: android. database.sqlite.SQLiteException: "add"附近:语法错误(代码 1):

转载 作者:太空狗 更新时间:2023-10-29 15:58:29 27 4
gpt4 key购买 nike

我在 SQLite 数据库中有一个表。在 Android Studio 中我有这个错误:

Caused by: android.database.sqlite.SQLiteException: near "add": syntax 
error (code 1): , while compiling: SELECT id, onvan, matn,
nevisande, tasvir, fav, khande, ezafi, address, pdfname,
downloaded, add, buy FROM dastanha

这是我的数据库适配器:

public class DBAdapter {

public static final String KEY_ID = "id";
public static final String KEY_ONVAN = "onvan";
public static final String KEY_MATN = "matn";
public static final String KEY_NEVIS = "nevisande";
public static final String KEY_IMG = "tasvir";
public static final String KEY_FAV = "fav";
public static final String KEY_KHAND = "khande";
public static final String KEY_EXTRA = "ezafi";
public static final String KEY_ADDRESS = "address";
public static final String KEY_PDFNAME = "pdfname";
public static final String KEY_DOWNLOADED = "downloaded";
public static final String KEY_ADD = "add";
public static final String KEY_BUY = "buy";
public static final String DATABASE_NAME = "dastanha";
public static final String DATABASE_TABLE = "dastanha";
public static final String TAG = "book";


static final String CREATE_TABLE = "CREATE TABLE "+DATABASE_TABLE+" ("+KEY_ID+" INTEGER PRIMARY KEY NOT NULL ,"
+KEY_ONVAN+" TEXT,"+KEY_MATN+" TEXT,"+KEY_NEVIS+" TEXT,"
+ KEY_IMG+" TEXT,"+KEY_FAV+" INTEGER NOT NULL DEFAULT (0) ,"
+KEY_KHAND+" INTEGER NOT NULL DEFAULT (0) ,"+KEY_EXTRA+" TEXT,"
+KEY_ADDRESS+" TEXT,"+KEY_PDFNAME+" TEXT DEFAULT (null) , "
+KEY_DOWNLOADED+" INTEGER NOT NULL DEFAULT 0, "
+KEY_ADD+" INTEGER NOT NULL DEFAULT 0, "
+KEY_BUY+" INTEGER NOT NULL DEFAULT 0)";

String[] yek_name = new String[] { KEY_ID, KEY_ONVAN, KEY_MATN, KEY_NEVIS,
KEY_IMG, KEY_FAV, KEY_KHAND, KEY_EXTRA, KEY_ADDRESS, KEY_PDFNAME, KEY_DOWNLOADED, KEY_ADD, KEY_BUY };

final Context context;

DatabaseHelper DBHelper;
SQLiteDatabase db;

public DBAdapter(Context ctx) {
this.context = ctx;
DBHelper = new DatabaseHelper(context);
}

private static class DatabaseHelper extends SQLiteOpenHelper {
DatabaseHelper(Context context) {
// DATABASE_VERSION = 8
super(context, DATABASE_NAME, null, 8);
}

@Override
public void onCreate(SQLiteDatabase db) {
try {
db.execSQL(CREATE_TABLE);
} catch (SQLException e) {
e.printStackTrace();
}
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Log.w(TAG, "Upgrading database from version " + oldVersion + " to "
+ newVersion + ", which will destroy all old data");

db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE);
onCreate(db);
}
}
public DBAdapter open() throws SQLException {
db = DBHelper.getWritableDatabase();
return this;
}
public void close() {
DBHelper.close();
}
public List<Dastan> getAllContacts() {

Cursor cursor = db.query(DATABASE_TABLE, yek_name, null, null, null,
null, null);
List<Dastan> nams = cursorToList(cursor);
return nams;
}
private List<Dastan> cursorToList(Cursor cursor) {
List<Dastan> nams = new ArrayList<Dastan>();
if (cursor.getCount() > 0) {
while (cursor.moveToNext()) {
Dastan nam = new Dastan();
nam.setId(cursor.getInt(cursor.getColumnIndex(KEY_ID)));
nam.setOnvan(cursor.getString(cursor.getColumnIndex(KEY_ONVAN)));
nam.setMatn(cursor.getString(cursor.getColumnIndex(KEY_MATN)));
nam.setNevisande(cursor.getString(cursor.getColumnIndex(KEY_NEVIS)));
nam.setTasvir(cursor.getString(cursor.getColumnIndex(KEY_IMG)));
nam.setFav(cursor.getInt(cursor.getColumnIndex(KEY_FAV)));
nam.setKhande(cursor.getInt(cursor.getColumnIndex(KEY_KHAND)));
nam.SetEzafi(cursor.getString(cursor.getColumnIndex(KEY_EXTRA)));
nam.SetAddress(cursor.getString(cursor.getColumnIndex(KEY_ADDRESS)));
nam.SetPdfname(cursor.getString(cursor.getColumnIndex(KEY_PDFNAME)));
nam.setDownloaded(cursor.getInt(cursor.getColumnIndex(KEY_DOWNLOADED)));
nam.setAdd(cursor.getInt(cursor.getColumnIndex(KEY_ADD)));
nam.setBuy(cursor.getInt(cursor.getColumnIndex(KEY_BUY)));

nams.add(nam);
};
return nams;
}
public Dastan getContact(int new_id) throws SQLException {

List<Dastan> nams = new ArrayList<Dastan>();

Cursor cursor = db.query(true, DATABASE_TABLE, yek_name, KEY_ID
+ " == '" + new_id + "'", null, null, null, null, null);
Dastan nam = new Dastan();
if (cursor != null) {
cursor.moveToFirst();
nams = cursorToList(cursor);
}
return nams.get(0);
}

// /search
public List<Dastan> findContacts(String nam, String row)
throws SQLException {
Cursor cursor = db.query(true, DATABASE_TABLE, yek_name, row
+ " LIKE '%" + nam + "%'", null, null, null, null, null);
List<Dastan> nams = cursorToList(cursor);
return nams;
}

// /fav?
public List<Dastan> findFAVContacts() throws SQLException {
Cursor cursor = db.query(true, DATABASE_TABLE, yek_name, KEY_FAV
+ " == " + 1 + "", null, null, null, null, null);

List<Dastan> nams = cursorToList(cursor);
return nams;
}
public List<Dastan> findKhandeContacts() throws SQLException {
Cursor cursor = db.query(true, DATABASE_TABLE, yek_name, KEY_KHAND
+ " == " + 1 + "", null, null, null, null, null);

List<Dastan> nams = cursorToList(cursor);
return nams;
}

// ---updates a contact---
public boolean updateContact(Dastan up_nam) {
ContentValues args = new ContentValues();
args.put(KEY_ID, up_nam.getId());
args.put(KEY_ONVAN, up_nam.getOnvan());
args.put(KEY_MATN, up_nam.getMatn());
args.put(KEY_NEVIS, up_nam.getNevisande());
args.put(KEY_IMG, up_nam.getTasvir());
args.put(KEY_FAV, up_nam.getFav());
args.put(KEY_KHAND, up_nam.getKhande());
args.put(KEY_EXTRA, up_nam.getEzafi());
args.put(KEY_ADDRESS, up_nam.getAddress());
args.put(KEY_PDFNAME, up_nam.getPdfname());
args.put(KEY_DOWNLOADED, up_nam.getDownloaded());
args.put(KEY_ADD, up_nam.getAdd());
args.put(KEY_BUY, up_nam.getBuy());

return db.update(DATABASE_TABLE, args, KEY_ID + "=" + up_nam.getId(),
null) > 0;
}
}

和:

public class Dastan implements Parcelable{

private int id;
private String onvan;
private String matn;
private String nevisande;
private String tasvir;
private int fav;
private int khande;
private String ezafi;
private String address;
private String pdfname;
private int downloaded;
private int add;
private int buy;


public Dastan (){

}

public int getId(){
return id;
}
public void setId(int id){
this.id = id;
}
public String getOnvan(){
return onvan;
}
public void setOnvan(String onvan){
this.onvan = onvan;
}
public String getMatn (){
return matn;
}
public void setMatn(String matn){
this.matn = matn;
}
public String getNevisande(){
return nevisande;
}
public void setNevisande(String nevisande){
this.nevisande = nevisande;
}
public String getTasvir(){
return tasvir;
}
public void setTasvir(String tasvir){
this.tasvir = tasvir;
}
public int getFav(){
return fav;
}
public void setFav(int fav){
this.fav = fav;
}
public int getKhande(){
return khande;
}
public void setKhande(int khande){
this.khande = khande;
}
public String getEzafi(){
return ezafi;
}
public void SetEzafi(String ezafi){
this.ezafi = ezafi;
}
public String getAddress(){
return address;
}
public void SetAddress(String address){
this.address = address;
}
public String getPdfname(){
return pdfname;
}
public void SetPdfname(String pdfname){
this.pdfname = pdfname;
}
public int getDownloaded(){
return downloaded;
}
public void setDownloaded(int downloaded){this.downloaded = downloaded;}
public int getAdd(){return add;}
public void setAdd(int add){this.add = add;}
public int getBuy(){return buy;}
public void setBuy(int buy){this.buy = buy;}


public Dastan (Parcel in){
id = in.readInt();
onvan = in.readString();
matn = in.readString();
nevisande = in.readString();
tasvir = in.readString();
fav = in.readInt();
khande = in.readInt();
ezafi=in.readString();
address=in.readString();
pdfname=in.readString();
downloaded = in.readInt();
add = in.readInt();
buy = in.readInt();

}
@Override
public int describeContents() {
// TODO Auto-generated method stub
return 0;
}

@Override
public void writeToParcel(Parcel dest, int arg1) {
// TODO Auto-generated method stub
dest.writeInt(id);
dest.writeString(onvan);
dest.writeString(matn);
dest.writeString(nevisande);
dest.writeString(tasvir);
dest.writeInt(fav);
dest.writeInt(khande);
dest.writeString(ezafi);
dest.writeString(address);
dest.writeString(pdfname);
dest.writeInt(downloaded);
dest.writeInt(add);
dest.writeInt(buy);

}
public static final Parcelable.Creator<Dastan> CREATOR = new Parcelable.Creator<Dastan>() {

@Override
public Dastan createFromParcel(Parcel arg0) {
// TODO Auto-generated method stub
return new Dastan(arg0);
}

@Override
public Dastan[] newArray(int arg0) {
// TODO Auto-generated method stub
return new Dastan[arg0];
}
};

}

和 Logcat:

    08-16 14:10:24.038 14377-14377/com.example.ava.book3 E/SQLiteLog: (1) near "add": syntax error
08-16 14:10:24.039 14377-14377/com.example.ava.book3 D/AndroidRuntime: Shutting down VM
08-16 14:10:24.039 14377-14377/com.example.ava.book3 E/AndroidRuntime: FATAL EXCEPTION: main
Process:
com.example.ava.book3, PID: 14377
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.ava.book3/com.example.ava.book3.MainActivity}: android.database.sqlite.SQLiteException: near "add": syntax error (code 1): , while compiling: SELECT id, onvan, matn, nevisande, tasvir, fav, khande, ezafi, address, pdfname, downloaded, add, buy FROM dastanha
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Caused by: android.database.sqlite.SQLiteException: near "add": syntax error (code 1): , while compiling: SELECT id, onvan, matn, nevisande, tasvir, fav, khande, ezafi, address, pdfname, downloaded, add, buy FROM dastanha
at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:887)
at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:498)
at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:37)
at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:44)
at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1316)
at android.database.sqlite.SQLiteDatabase.queryWithFactory(SQLiteDatabase.java:1163)
at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1034)
at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1202)
at com.example.ava.book3.DBAdapter.getAllContacts(DBAdapter.java:126)
at com.example.ava.book3.MainActivity.onCreate(MainActivity.java:118)
at android.app.Activity.performCreate(Activity.java:6237)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
at android.app.ActivityThread.-wrap11(ActivityThread.java) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:148) 
at android.app.ActivityThread.main(ActivityThread.java:5417) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
08-16 14:10:24.063 1727-2422/system_process W/ActivityManager: Force finishing activity com.example.ava.book3/.MainActivity

不知道哪里出了问题。请帮我。提前致谢。

最佳答案

ADD 是一个 reserved keyword在 SQLite 中,用于 add columns to an existing table .

The SQL standard specifies a huge number of keywords which may not be used as the names of tables, indices, columns, databases, user-defined functions, collations, virtual table modules, or any other named object.

因此,您应该为您的列使用另一个名称,或者如果您绝对需要,您可以使用以下方法之一,如 keywords documentation page 中所定义的那样:

If you want to use a keyword as a name, you need to quote it. There are four ways of quoting keywords in SQLite:

  • 'keyword' A keyword in single quotes is a string literal.
  • "keyword" A keyword in double-quotes is an identifier.
  • [keyword] A keyword enclosed in square brackets is an identifier.

This is not standard SQL. This quoting mechanism is used by MS Access and SQL Server and is included in SQLite for compatibility.

关于java - 错误 : Caused by: android. database.sqlite.SQLiteException: "add"附近:语法错误(代码 1):,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51879368/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com