我刚刚开始使用android studio。我在应用程序编程或其他方面也是新手。现在,我尝试构建我的第一个应用程序。我收到失败消息:"E/SQLiteLog:(1) duplicate column name: Temperatur“
在其他线程中,我找不到正确的解决方案。
我的代码:
公共类FangbuchDbHelper扩展了SQLiteOpenHelper {
public static final String DB_NAME = "fangbuch.db";
public static final int DB_Version = 1;
public static final String TABLE_KARPFEN = "Karpfen";
public static final String COLUMN_ID = "id";
public static final String COLUMN_DATUM = "Datum";
public static final String COLUMN_ZEIT = "Uhrzeit";
public static final String COLUMN_WINDRICHTUNG = "Windrichtung";
public static final String COLUMN_WINDSTAERKE = "Windstärke bft";
public static final String COLUMN_TEMPERATURA = "Temperatur außen";
public static final String COLUMN_TEMPERATURW = "Temperatur Wasser";
public static final String COLUMN_HPAGESTERN = "hPa gestern";
public static final String COLUMN_HPAHEUTE = "hPa heute";
public static final String COLUMN_HPAMORGEN = "hPa morgen";
public static final String COLUMN_MOND = "Mond";
public static final String COLUMN_GEWICHT = "Gewicht";
public static final String COLUMN_FOTO = "Foto";
public static final String TABLE_MEERFORELLE = "Meerforelle";
public static final String COLUMN_ID2 = "id2";
public static final String COLUMN_DATUM2 = "Datum2";
public static final String COLUMN_ZEIT2 = "Zeit2";
public static final String COLUMN_WASSERSTAND = "Wasserstand";
public static final String COLUMN_WINDSTAERKE2 = "Windstärke2 bft";
public static final String COLUMN_WINDRICHTUNG2 = "Windrichtung2";
public static final String COLUMN_TEMPERATURW2 = "Wassertemperatur";
public static final String COLUMN_STROEMUNG = "Strömung";
public static final String COLUMN_FOTO2 = "Foto2";
public static final String SQL_CREATE =
"create table " + TABLE_KARPFEN + "(" +
COLUMN_ID + " integer primary key , " +
COLUMN_DATUM + " text not null, " +
COLUMN_ZEIT + " text, " +
COLUMN_WINDRICHTUNG + " text, " +
COLUMN_WINDSTAERKE + " integer, " +
COLUMN_TEMPERATURA + " integer, " +
COLUMN_TEMPERATURW + " integer not null, " +
COLUMN_HPAGESTERN + " integer, " +
COLUMN_HPAHEUTE + " integer, " +
COLUMN_HPAMORGEN + " integer, " +
COLUMN_MOND + " text, " +
COLUMN_GEWICHT + " REAL, " +
COLUMN_FOTO + " text); ";
public static final String SQL_CREATE2 =
"create table " + TABLE_MEERFORELLE + "(" +
COLUMN_ID2 + " integer, " +
COLUMN_DATUM2 + " text not null, " +
COLUMN_ZEIT2 + " text, " +
COLUMN_WASSERSTAND + " text, " +
COLUMN_WINDSTAERKE2 + "integer, " +
COLUMN_WINDRICHTUNG2 + " text, " +
COLUMN_TEMPERATURW2 + " integer, " +
COLUMN_STROEMUNG + " text, " +
COLUMN_FOTO2 + " text); ";
public FangbuchDbHelper(@Nullable Context context) {
super(context, DB_NAME, null, DB_Version);
}
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
sqLiteDatabase.execSQL(SQL_CREATE);
sqLiteDatabase.execSQL(SQL_CREATE2);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Log.w(FangbuchDbHelper.class.getName(), "Upgrading database from version " + oldVersion + "to "
+ newVersion + ", which will destroy all old data");
db.execSQL("DROP TABLE IF EXISTS " + DB_NAME);
onCreate(db);
}}
一开始,我有重复的列名。但现在我已经改变了这一点。但我还是收到了这条消息。
我的错误是什么?有人能帮我吗?谢谢
关于Ulf
发布于 2021-04-19 03:27:54
我不是SQL(ite)专家,但是值得注意的是,您的列名Temperatur außen和Temperatur Wasser包含一个空格,并且在create table语句中插入时没有加引号,这可能会导致错误。根据的说法,在SQLite中有三到四种引用标识符的方法-您可能希望在COLUMN_TEMPERATURA和COLUMN_TEMPERATURW的定义中选择一种。
发布于 2021-04-21 20:29:56
也许这些活动可以有所帮助:
public class DbEntry {
//Karpfen Spalten Variablen
private long id;
private String Datum;
private String Zeit;
private String Windrichtung;
private int Windstaerke;
private int TemperaturA;
private int TemperaturW;
private int hPaGestern;
private int hPaHeute;
private int hPaMorgen;
private String Mond;
private float Gewicht;
//Meerforellen Spalten Variablen
private long id2;
private String Datum2;
private String Zeit2;
private String Wasserstand;
private int Windstaerke2;
private String Windrichtung2;
private int TemperaturW2;
private String Stroemung;
//get und set für Karpfentabelle
public long getId() {
return id;
}
public void setId (long id){
this.id = id;
}
public String getDatum() {
return Datum;
}
public void setDatum(String string) {
this.Datum = Datum;
}
public String getZeit() {
return Zeit;
}
public void setZeit(String string) {
this.Zeit = Zeit;
}
public String getWindrichtung() {
return Windrichtung;
}
public void setWindrichtung(String string) {
this.Windrichtung = Windrichtung;
}
public int getWindstaerke() {
return Windstaerke;
}
public void setWindstaerke(int anInt) {
this.Windstaerke = Windstaerke;
}
public int getTemperaturA() {
return TemperaturA;
}
public void setTemperaturA(int anInt) {
this.TemperaturA = TemperaturA;
}
public int getTemperaturW() {
return TemperaturW;
}
public void setTemperaturW(int anInt) {
this.TemperaturW = TemperaturW;
}
public int gethPaGestern() {
return hPaGestern;
}
public void sethPaGestern(int anInt) {
this.hPaGestern = hPaGestern;
}
public int gethPaHeute() {
return hPaHeute;
}
public void sethPaHeute(int anInt) {
this.hPaHeute = hPaHeute;
}
public int gethPaMorgen() {
return hPaMorgen;
}
public void sethPaMorgen(int anInt) {
this.hPaMorgen = hPaMorgen;
}
public String getMond() {
return Mond;
}
public void setMond(String string) {
this.Mond = Mond;
}
public float getGewicht() {
return Gewicht;
}
public void setGewicht(float aFloat) {
this.Gewicht = Gewicht;
}
//get und set für Meerforellen Tabelle
public long getId2() {
return id2;
}
public void setId2(long aLong) {
this.id2 = id2;
}
public String getDatum2() {
return Datum2;
}
public void setDatum2(String string) {
this.Datum2 = Datum2;
}
public String getZeit2() {
return Zeit2;
}
public void setZeit2(String string) {
this.Zeit2 = Zeit2;
}
public String getWasserstand() {
return Wasserstand;
}
public void setWasserstand(String string) {
this.Wasserstand = Wasserstand;
}
public int getWindstaerke2() {
return Windstaerke2;
}
public void setWindstaerke2(int anInt) {
this.Windstaerke2 = Windstaerke2;
}
public String getWindrichtung2() {
return Windrichtung2;
}
public void setWindrichtung2(String string) {
this.Windrichtung2 = Windrichtung2;
}
public int getTemperaturW2() {
return TemperaturW2;
}
public void setTemperaturW2(int anInt) {
this.TemperaturW2 = TemperaturW2;
}
public String getStroemung() {
return Stroemung;
}
public void setStroemung(String string) {
this.Stroemung = Stroemung;
}}
或者这个活动:
公共类DbDataSource {
private SQLiteDatabase fbDatabase;
private FangbuchDbHelper dbHelper;
private String[] allColumnsKarpfen = {"COLUMN_ID", "COLUMN_DATUM", "COLUMN_ZEIT", "COLUMN_WINDRICHTUNG", "COLUMN_WINDSTAERKE",
"COLUMN_TEMPERATURA", "COLUMN_TEMPERATURW", "COLUMN_HPAGESTERN", "COLUMN_HPAHEUTE", "COLUMN_HPAMORGEN", "COLUMN_MOND",
"COLUMN_GEWICHT"};
private String[] allColumnsMeerforelle = {"COLUMN_ID2", "COLUMN_DATUM2", "COLUMN_ZEIT2", "COLUMN_WASSERSTAND", "COLUMN_WINDSTAERKE2",
"COLUMN_WINDRICHTUNG2", "COLUMN_TEMPERATURW2", "COLUMN_STROEMUNG"};
public DbDataSource(Context context) {
dbHelper = new FangbuchDbHelper(context);
}
public void open() throws SQLException {
fbDatabase = dbHelper.getWritableDatabase();
}
public void close() {
dbHelper.close();
}
public DbEntry createEntryKarpfen(String Datum, String Zeit, String Windrichtung, int Windstaerke, int TemperaturA, int TemperaturW,
int hPaGestern, int hPaHeute, int hPaMorgen, String Mond, float Gewicht) {
ContentValues values = new ContentValues();
values.put("COLUMN_DATUM", Datum);
values.put("COLUMN_ZEIT", Zeit);
values.put("COLUMN_WINDRICHTUNG", Windrichtung);
values.put("COLUMN_WINDSTAERKE", Windstaerke);
values.put("COLUMN_TEMPERATURA", TemperaturA);
values.put("COLUMN_TEMPERATURW", TemperaturW);
values.put("COLUMN_HPAGESTERN", hPaGestern);
values.put("COLUMN_HPAHEUTE", hPaHeute);
values.put("COLUMN_HPAMORGEN", hPaMorgen);
values.put("COLUMN_MOND", Mond);
values.put("COLUMN_GEWICHT", Gewicht);
long insertId = fbDatabase.insert("TABLE_KARPFEN", null, values);
Cursor cursor = fbDatabase.query("TABLE_KARPFEN", allColumnsKarpfen, "COLUMN_ID = " + insertId, null, null, null, null);
cursor.moveToFirst();
return cursorToDbEntryKarpfen(cursor);
}
public DbEntry createEntryMeerforelle(String Datum2, String Zeit2, String Wasserstand, int Windstaerke2, String Windrichtung2, int TemperaturW2,
String Stroemung) {
ContentValues values2 = new ContentValues();
values2.put("COLUMN_DATUM2", Datum2);
values2.put("COLUMN_ZEIT2", Zeit2);
values2.put("COLUMN_WASSERSTAND", Wasserstand);
values2.put("COLUMN_WINDSTAERKE2", Windstaerke2);
values2.put("COLUMN_WINDRICHTUNG2", Windrichtung2);
values2.put("COLUMN_TEMPERATURW2", TemperaturW2);
values2.put("COLUMN_STROEMUNG", Stroemung);
long insertId2 = fbDatabase.insert("TABLE_MEERFORELLE", null, values2);
Cursor cursorMeerforelle = fbDatabase.query("TABLE_MEERFORELLE", allColumnsMeerforelle, "COLUMN_ID2 = " + insertId2, null, null, null, null);
cursorMeerforelle.moveToFirst();
return cursorToDbEntryMeerforelle(cursorMeerforelle);
}
protected List<DbEntry> getKarpfenEntries() {
List<DbEntry> EntryKarpfenList = new ArrayList<DbEntry>();
EntryKarpfenList = new ArrayList<DbEntry>();
Cursor cursor = fbDatabase.query("TABLE_KARPFEN", allColumnsKarpfen, null,null, null, null, null);
cursor.moveToFirst();
if(cursor.getCount() == 0) return EntryKarpfenList;
while (cursor.isAfterLast() == false) {
DbEntry entry = cursorToDbEntryKarpfen(cursor);
EntryKarpfenList.add(entry);
cursor.moveToNext();
}
cursor.close();
return EntryKarpfenList;
}
protected List<DbEntry> getMeerforelleEntries() {
List<DbEntry> EntryMeerforelleList = new ArrayList<DbEntry>();
EntryMeerforelleList = new ArrayList<DbEntry>();
Cursor cursor = fbDatabase.query("TABLE_MEERFORELLE", allColumnsMeerforelle, null,null, null, null, null);
cursor.moveToFirst();
if(cursor.getCount() == 0) return EntryMeerforelleList;
while (cursor.isAfterLast() == false) {
DbEntry entry = cursorToDbEntryKarpfen(cursor);
EntryMeerforelleList.add(entry);
cursor.moveToNext();
}
cursor.close();
return EntryMeerforelleList;
}
private DbEntry cursorToDbEntryKarpfen(Cursor cursor) {
DbEntry entry = new DbEntry();
entry.setId(cursor.getLong(0));
entry.setDatum(cursor.getString(1));
entry.setZeit(cursor.getString(2));
entry.setWindrichtung(cursor.getString(3));
entry.setWindstaerke(cursor.getInt(4));
entry.setTemperaturA(cursor.getInt(5));
entry.setTemperaturW(cursor.getInt(6));
entry.sethPaGestern(cursor.getInt(7));
entry.sethPaHeute(cursor.getInt(8));
entry.sethPaMorgen(cursor.getInt(9));
entry.setMond(cursor.getString(10));
entry.setGewicht(cursor.getFloat(11));
return entry;
}
private DbEntry cursorToDbEntryMeerforelle(Cursor cursor) {
DbEntry entry2 = new DbEntry();
entry2.setId2(cursor.getLong(0));
entry2.setDatum2(cursor.getString(1));
entry2.setZeit2(cursor.getString(2));
entry2.setWasserstand(cursor.getString(3));
entry2.setWindstaerke2(cursor.getInt(4));
entry2.setWindrichtung2(cursor.getString(5));
entry2.setTemperaturW2(cursor.getInt(6));
entry2.setStroemung(cursor.getString(7));
return entry2;
}}
https://stackoverflow.com/questions/67150245
复制相似问题