2016-08-03 23 views
0

Ich erstelle tatsächlich eine Android-Anwendung, die dynamische Formulare erstellt, in denen die Spaltenüberschriften für jede Tabelle dynamisch vom Benutzer selbst festgelegt wird, ist meine Anfrage, dass meine Anwendung Benutzer eingeben soll Spaltenkopf mit einfachen Anführungszeichen wie-Name, kein etc.I bereits diesen Code versucht, und es hilft bei derAndroid SQLite: Einfügen von einfachen Anführungszeichen

public void CreateDynamicTables(String Table_Name, List<String> arr) { 
     SQLiteDatabase dbs; 

     dbs = this.getWritableDatabase(); 
     dbs.execSQL("DROP TABLE IF EXISTS " + Table_Name); 

     String query = "CREATE TABLE " + Table_Name + "(" + CID 
       + " INTEGER PRIMARY KEY AUTOINCREMENT, "; 

     for (int i = 0; i < arr.size(); i++) { 

      if(i==arr.size()-1){ 
       query+="`"+arr.get(i)+"`"+ " TEXT);"; 
      }else{ 
       query+="`"+arr.get(i)+"`"+ " TEXT,"; 
      } 
     } 

     System.out.println(" Final Query :: " + query); 

     dbs.execSQL(query); 
     //ColumnNames(Table_Name); 
     System.out.println(" successfully created table from FILE :: " + query); 
     dbs = this.getWritableDatabase(); 
     dbs.close(); 
    } 

zur Datenbank Apostroph String Einfügen Obwohl ich mit

Drei verschiedene Spaltenüberschrift

ich immer noch Probleme haben werde, während die Tabelle zu ändern bin der unter Ausnahme

android.database.sqlite.SQLiteException: duplicate column name: 'single's' (code 1): , while compiling: ALTER TABLE smp07 ADD COLUMN `'single's'` TEXT 

column für Altertable bekommen: [ ‚Single des‘ Triple ",‚Doppel ‚]

Code zum ändern

if(cols.size()<arr.size()){ 
      db=this.getWritableDatabase(); 
      if(db.isOpen()){System.out.println("Open Database Confirmed...!!");} 
      System.out.println(" in add column in table"); 
      for (int i = 0; i < arr.size(); i++) { 
       if(!cols.contains(arr.get(i))){ 
        System.out.println("COlumn names are:"+arr.get(i).toString()); 
        System.out.println(" ADD column Alter table"); 
        db.execSQL("ALTER TABLE "+ Table_name +" ADD COLUMN "+"`"+arr.get(i)+"`"+" TEXT"); 
       } 
      } 
     } 

     db.close();} 

PS: Es falls geschieht, wo verschiedene Spaltenüberschriften

Wenn es eine andere sichere Art und Weise einfügen Apostroph Anweisung in SQLLite plse helfen

Antwort

0

In SQL Identifikatoren (wie eingefügt werden als Spalten-/Tabellennamen) kann mit doppelten Anführungszeichen zitiert werden. In diesem Fall müssen alle doppelten Anführungszeichen im tatsächlichen Namen mit Doppelpunkten versehen werden.

Um Kompatibilität mit anderen DBs zu ermöglichen, erlaubt SQLite auch das Angeben von Bezeichnern mit einfachen Anführungszeichen, Backticks oder eckigen Klammern.


Wie auch immer, die Fehlermeldung „doppelte Spaltenname“ hat nichts mit dem zu tun zu zitieren; Es zeigt an, dass Sie versucht haben, dieselbe Spalte ein zweites Mal hinzuzufügen.

+0

Ich habe beim Eingeben doppelt überprüft. Ich habe nicht versucht, denselben Namen zweimal einzugeben. –

+0

Die Datenbank stimmt nicht mit Ihnen überein. –