2012-02-08 14 views
6

Duplicar posible:
Is it possible to apply primary key on the text fields in android databasecómo agregar la clave principal al tipo de datos de texto en android sqlite?

he hecho como éstos conseguir fuerza de cierre.

private static final String CREATE_NEWCUSTOMER = "create table newcustomer (_id integer primary key autoincrement, " 
      + "cname text primary key, date text , " + "caddress text);"; 

funciona para entero si tiene alguna idea por favor ayúdeme.

+0

ver esto: http://stackoverflow.com/questions/7591492/is-it-possible-to-apply-primary-key-on-the-text-fields-in-android-database –

Respuesta

7

No crea claves primarias como esa en SQLite. No he probado los siguientes, pero de acuerdo a la documentación debería funcionar:

private static final String CREATE_NEWCUSTOMER = "create table newcustomer (_id integer autoincrement, cname text, date text, caddress text, PRIMARY KEY(_id, cname));"; 
+1

Está funcionando, pero la columna cname toma los valores doublicate – sai

+1

¡Por supuesto que sí! La columna 'cname' sola no es única. Solo es único en combinación con la columna '_id', ya que ambos pertenecen a la clave principal. Como la columna '_id' es' autoincrement', obtienes una combinación única para cada valor de 'cname'. Sin embargo, su pregunta no era cómo hacer que la columna 'cname' sea única. –

-3

Prueba esto:

final String CREATE_TABLE_JobTime = 
    "CREATE TABLE jt (q_id INTEGER PRIMARY KEY AUTOINCREMENT,description VARCHAR);"; 
db.execSQL(CREATE_TABLE_JobTime); 
+1

Está preguntando claramente sobre la clave principal en el campo TEXTO, falta en la solución provista. –

+0

AUTOINCREMENT nunca se aplica a la clave primaria de texto, solo se implementa en valores enteros – Deepak

3

Puede añadir el atributo clave primaria en texto sin ningún problema. En su consulta anterior, hay un problema importante. No puede aplicar el atributo 'AutoIncrement' si su clave principal está compuesta por más de una columna.

  • AutoIncrement no permitida si la clave principal es sobre dos o más columnas

Aquí está una consulta de ejemplo que crea una tabla con una clave principal que se compone de dos columnas, una columna tiene Entero tipo de datos y otro tiene texto PRIMARY KEY ("col_1", "col_2").

CREATE TABLE "Table_Name" ("col_1" INTEGER NOT NULL , "col_2" TEXT NOT NULL , "col_3" TEXT, "col_4" VARCHAR, PRIMARY KEY ("col_1", "col_2")) 
Cuestiones relacionadas