2011-07-09 21 views
5

He hecho esta pregunta varias veces y aún así obtener una respuesta COMPLETA ... Cómo implementar la instrucción ALTER TABLE para agregar una columna a una base de datos. ¿Alguien puede POR FAVOR darme un ejemplo?Ejemplo de cómo implementar ALTER TABLE

+3

¿Has visto los comentarios y respuestas anteriores de tu pregunta? –

Respuesta

16

Lea la SQLite ALTER TABLE reference, y esto Android SQLite article:

database.execSQL("ALTER TABLE " + your_table_name + " ADD COLUMN " + new_col_name + " int"); 
+0

Todavía me dice que la columna existe. – yoshi24

+0

@ Override \t \t \t public void onCreate (SQLiteDatabase db) { \t \t \t db.execSQL (DATABASE_CREATE); \t \t \t \t \t db.execSQL ("ALTER TABLE" + DATABASE_NAME + "Añadir columna" + KEY_STATUS + "texto"); Esto funciona Aún así, el estado de la columna de error no existe – yoshi24

1
ALTER TABLE db_name.mytable ADD COLUMN column_name VARCHAR(30) 

Eso es para SQLite. Otras bases de datos pueden permitirle especificar dónde se coloca la columna, pero con SQLite se adjunta al final.

EDIT: Pensé en esto un poco más. En su pregunta, usted pidió una respuesta completa. Y alguien identificó que, básicamente, le hizo la misma pregunta solo 5 horas antes de hacer esta pregunta. Teniendo en cuenta que ninguna de las respuestas en el hilo anterior era lo que estaba buscando (a pesar de que algunas ofrecen ejemplos completos de SQL), me parece que una respuesta completa debe incluir algo más que el SQL y algunos enlaces a tutoriales web.

En un esfuerzo por ser completo y completo, permítanme sugerir que consideren los siguientes libros: Using SQLite (O'Reilly) y Learning Android (O'Reilly). De hecho, este último tiene un capítulo (capítulo 9) dedicado al entorno de la base de datos de Android, es decir, la implementación de Android de SQLite.

Las personas que tienen mucha experiencia en bases de datos, con programación y con diversos sistemas operativos a menudo pueden usar manuales web y algunos consejos sobre sitios como StackOverflow. Pero para el resto de nosotros (incluyéndome a mí), cuando realmente quiero aprender un tema que considero importante para mí, me sumerjo en un par de buenos libros en el camino.

Espero que usted, u otra persona que acaba de comenzar con estos temas, encuentre útil este consejo.

+0

¡GRACIAS! Entonces, ¿dónde implemento esto en mi base de datos? – yoshi24

+0

Eso depende de usted. Tú eres el que necesita una columna agregada. :) Además, datatype podría ser cualquiera de los tipos de SQLite válidos. No necesariamente VARCHAR. INTEGER, TEXT, CHAR, etc. También utilicé 'db_name.mytable' como texto de plantilla. Debe usar su propio nombre de base de datos y nombre de tabla. Lo mismo para 'column_name'. – DavidO

+0

@ Override \t \t \t public void onCreate (db SQLiteDatabase) { \t \t \t db.execSQL (DATABASE_CREATE); \t \t \t \t \t ALTER TABLE nba.bookList ADD COLUMN KEY_STATUS text; ¿Es esto correcto? – yoshi24

1

Acabo de encontrar esto e intenté una y otra vez y obtuve la excepción descrita aquí sobre la columna que no existe, a pesar de que la sentencia alter table no arrojó ninguna excepción.

Después de dos horas de intentar, configurar un almacenamiento de copia de seguridad de archivos, y todo lo que parecía viable aquí, me di cuenta de que no incluía la nueva columna en la "consulta de selección", pero traté de extraer los datos del cursor, por lo tanto, la columna no existe excepción.

+0

Buen recordatorio para seguir los cambios a través de su código, –

Cuestiones relacionadas