2015-11-30 29 views
-5

我有连接错误列:android.database.sqlite.SQLiteException:表aerzte没有名为_vorname安卓:表中有没有名为“列名”

列,但我的表有列_vorname。我找不到错误,请帮助我。 下面是代码:

private static final int DATABASE_VERSION = 1; 
private static final String DATABASE_NAME = "data.db"; 
private static final String TABLE_Aerzte = "aerzte"; 
private static final String COLUMN_ID = "_id"; 
private static final String COLUMN_Name = "_name"; 
private static final String COLUMN_Passwort = "_passwort"; 
private static final String COLUMN_Vorname = "_vorname"; 

//second table 
private static final String TABLE_Patienten = "patienten"; 
private static final String COLUMN_patID = "_id"; 
private static final String COLUMN_patName = "_name"; 
private static final String COLUMN_patVorname = "_vorname"; 
private static final String COLUMN_patSVNR = "_svnr"; 



//third table 
private static final String TABLE_Werte = "werte"; 
private static final String COLUMN_wertID = "_id"; 
private static final String COLUMN_wertpatName = "_name"; //foreign key -> patient (1:n) beziehung 
private static final String COLUMN_wertDatzeit = "_datzeit"; 
private static final String COLUMN_wertTemperatur = "_temperatur"; 
private static final String COLUMN_wertMessort = "_messort"; 

public MyDBHandler(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) { 
    super(context, DATABASE_NAME, factory, DATABASE_VERSION); 
    } 


    //create tables: 
     @Override 
public void onCreate(SQLiteDatabase db) { 
    //tabelle arzt 
    String query = "CREATE TABLE "+TABLE_Aerzte+"("+COLUMN_ID+" INTEGER PRIMARY KEY AUTOINCREMENT, "+COLUMN_Passwort+" TEXT, "+COLUMN_Name+ " TEXT, " +COLUMN_Vorname+ "TEXT " + ");"; 
    db.execSQL(query); 

    //tabelle patient 
    String query2 = "CREATE TABLE "+TABLE_Patienten+"("+COLUMN_patID+" INTEGER PRIMARY KEY AUTOINCREMENT, "+COLUMN_patName+" TEXT,"+COLUMN_patVorname+" TEXT, "+COLUMN_patSVNR+" LONG" + ");"; 
    db.execSQL(query2); 

    //tabelle wert 
    String query3 = "CREATE TABLE "+TABLE_Werte+"("+COLUMN_wertID+" INTEGER PRIMARY KEY AUTOINCREMENT, "+COLUMN_wertMessort+" TEXT, "+COLUMN_wertTemperatur+ " INTEGER, "+COLUMN_wertDatzeit+" DATETIME, "+COLUMN_wertpatName+" TEXT, FOREIGN KEY" + ");"; 
    db.execSQL(query3); 

} 



//insert 
public void registerPhysician(Fieberwerte fieberwerte) { // public void registerPhysician(etname, etpass, etvorname) 

    SQLiteDatabase db = this.getWritableDatabase(); 

    ContentValues values = new ContentValues(); 
    //values.put(COLUMN_ID, 1); 
    values.put(COLUMN_Passwort, fieberwerte.getPasswort()); 
    values.put(COLUMN_Name, fieberwerte.getName()); 
    values.put(COLUMN_Vorname, fieberwerte.getVorname()); 
    //db.insert(TABLE_Aerzte, null, values); 
    db.insertWithOnConflict(TABLE_Aerzte, null, values, SQLiteDatabase.CONFLICT_REPLACE); 
    //db.close(); 
} 

我希望你们能帮助我解决这个错误。我检查了代码几次,但我没有找到:-(

+3

题外话:*这个问题是由一个问题引起的,不能再被复制或**一个简单的印刷错误。*** – Selvin

回答

4

任何错误你错过了一个空间,在

" TEXT, " +COLUMN_Vorname+ "TEXT " + ");"; 

添加列名之间的空白,并键入

" TEXT, " +COLUMN_Vorname+ " TEXT " + ");"; 
+2

好的意见 –

+0

谢谢你,但它仍然不工作 – linuxman

+2

@linuxman卸载并运行再次。让我通知 –

0

错误是在这里

//tabelle arzt 
String query = "CREATE TABLE "+TABLE_Aerzte+"("+COLUMN_ID+" INTEGER PRIMARY KEY AUTOINCREMENT, "+COLUMN_Passwort+" TEXT, "+COLUMN_Name+ " TEXT, " +COLUMN_Vorname+ "TEXT " + ");"; 

COLUMN_Vorname后错过了一个空间,把一个空间文本之前。

COLUMN_Vorname+ " TEXT " + " 

这样做后,一旦卸载应用程序,并尝试

+0

我“TEXT”之前editet一个空间,我卸载我的应用程序,并再次尝试,但同样的错误仍然出现 – linuxman

+0

莫名其妙语法错误发生,现在 android.database.sqlite.SQLiteException语法错误(代码1):,编译时:CREATE TABLE werte(_id INTEGER PRIMARY KEY AUTOINCREMENT,_messort TEXT,_temperatur INTEGER,_datzeit DATETIME,_name TEXT,FOREIGN KEY); – linuxman

0

你必须创建这样使用外键:

String query3 = "CREATE TABLE "+TABLE_Werte+"("+COLUMN_wertID+" INTEGER PRIMARY KEY AUTOINCREMENT, "+COLUMN_wertMessort+" TEXT, "+COLUMN_wertTemperatur+ " INTEGER, "+COLUMN_wertDatzeit+" DATETIME, "+COLUMN_wertpatName+" TEXT," + " FOREIGN KEY ("+COLUMN_wertTemperatur+") REFERENCES "+TABLE_Patienten+"("+COLUMN_patID+"));"; 

这里的“COLUMN_wertTemperatur”这是一个外键创建表,其引用具有列名“COLUMN_patID”的“TABLE_Patienten”表的主键。

相关问题