我正在尝试做一个包含数据库的项目,但在创建数据库时我遇到了麻烦,因为我将所有字符串都以另一种形式放置了,但现在我不知道该如何获取字符串名称从一种形式转换为另一种形式,我将发布一个包含字符串名称的代码,也许有人可以提供帮助。我要强调的是我在使用“ //”时遇到的问题,我应该在这里写什么来从另一种名为“ KlausimuContracts”的表单中获取字符串名称
Klausimu合同表:
`package com.example.laivumusis;
import android.provider.BaseColumns;
public final class KlausimuContracts {
private KlausimuContracts(){}
public static class KlausimuLentele implements BaseColumns {
public static final String _ID = "ID";
public static final String TABLE_NAME = "klausimyno_klausimai";
public static final String COLUMN_QUESTION = "klausimai";
public static final String COLUMN_OPTION1 = "pasirinkimas1";
public static final String COLUMN_OPTION2 = "pasirinkimas2";
public static final String COLUMN_OPTION3 = "pasirinkimas3";
public static final String COLUMN_ANSWER_NR = "atsakymo_nr";
}
}`
数据库形式:
package com.example.laivumusis;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import androidx.annotation.Nullable;
import com.example.laivumusis.KlausimuContracts.*;
import java.util.ArrayList;
import java.util.List;
public class KlausimynoDatabaseHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "Klausimynas.db";
private static final int DATABASE_VERSION = 6;
private SQLiteDatabase db;
public KlausimynoDatabaseHelper(@Nullable Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
this.db = db;
final String SQL_CREATE_QUESTIONS_TABLE = "CREATE TABLE " +
KlausimuLentele.TABLE_NAME + " ( " +
KlausimuLentele._ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
KlausimuLentele.COLUMN_QUESTION + " TEXT, " +
KlausimuLentele.COLUMN_OPTION1 + " TEXT, " +
KlausimuLentele.COLUMN_OPTION2 + " TEXT, " +
KlausimuLentele.COLUMN_OPTION3 + " TEXT, " +
KlausimuLentele.COLUMN_ANSWER_NR + " INTEGER" +
")";
db.execSQL(SQL_CREATE_QUESTIONS_TABLE);
fillKlausimuLentele();
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + KlausimuLentele.TABLE_NAME);
onCreate(db);
}
public void addData(ContentValues contentValues){
getWritableDatabase().insert(KlausimuContracts.KlausimuLentele.TABLE_NAME, null, contentValues);
}
public Cursor getListContents() {
SQLiteDatabase db = this.getWritableDatabase();
Cursor data = db.rawQuery("SELECT * FROM " + KlausimuLentele.TABLE_NAME,null );
return data;
}
public boolean atnaujintiData (String ID, String klausimai) { // here is the problem
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(KlausimuLentele._ID, ID);
contentValues.put(KlausimuLentele.COLUMN_QUESTION, klausimai);
db.update(KlausimuLentele.TABLE_NAME, contentValues, "ID = ?", new String[] {ID});
return true;
}
private void fillKlausimuLentele() {
Klausimai q1 = new Klausimai("Kelintais metais buvo išleista java proogramavimo kalba?", "1991", "1995", "1989", 1);
addQuestion(q1);
Klausimai q2 = new Klausimai("Ar destytojas pasigailės mūsų?", "Priklauso nuo darbo", "Priklauso nuo pingų", "Prklauso nuo nuotaikos", 1);
addQuestion(q2);
Klausimai q3 = new Klausimai("Kai sunervina žaidimas koks geriausias būdas iš jo išeiti?", "Alt+F4", "Quit To desktop", "Ištraukti maitinimo laida",1);
addQuestion(q3);
Klausimai q4 = new Klausimai("A is correct again", "A", "B", "C", 1);
addQuestion(q4);
Klausimai q5 = new Klausimai("B is correct agian", "A", "B", "C", 2);
addQuestion(q5);
}
private void addQuestion(Klausimai klausimai) {
ContentValues cv = new ContentValues();
cv.put(KlausimuLentele.COLUMN_QUESTION, klausimai.getKlausimas());
cv.put(KlausimuLentele.COLUMN_OPTION1, klausimai.getPasirinkimas1());
cv.put(KlausimuLentele.COLUMN_OPTION2, klausimai.getPasirinkimas2());
cv.put(KlausimuLentele.COLUMN_OPTION3, klausimai.getPasirinkimas3());
cv.put(KlausimuLentele.COLUMN_ANSWER_NR, klausimai.getAtsakymoNr());
db.insert(KlausimuLentele.TABLE_NAME, null, cv);
}
public List<Klausimai> getAllQuestions() {
List<Klausimai> klausimuSarasas = new ArrayList<>();
db = getReadableDatabase();
Cursor c = db.rawQuery("SELECT * FROM " + KlausimuLentele.TABLE_NAME, null);
if (c.moveToFirst()) {
do {
Klausimai klausimai = new Klausimai();
klausimai.setKlausimas(c.getString(c.getColumnIndex(KlausimuLentele.COLUMN_QUESTION)));
klausimai.setPasirinkimas1(c.getString(c.getColumnIndex(KlausimuLentele.COLUMN_OPTION1)));
klausimai.setPasirinkimas2(c.getString(c.getColumnIndex(KlausimuLentele.COLUMN_OPTION2)));
klausimai.setPasirinkimas3(c.getString(c.getColumnIndex(KlausimuLentele.COLUMN_OPTION3)));
klausimai.setAtsakymoNr(c.getInt(c.getColumnIndex(KlausimuLentele.COLUMN_ANSWER_NR)));
klausimuSarasas.add(klausimai);
} while (c.moveToNext());
}
c.close();
return klausimuSarasas;
}
}
调试器问题:
E/SQLiteLog: (1) no such column: ID in "UPDATE klausimyno_klausimai SET klausimai=?,ID=? WHERE ID = ?"