Android Java, вставка базы данных, не работает - PullRequest
1 голос
/ 09 января 2012

Может кто-нибудь сказать мне, почему это не работает?

db = openOrCreateDatabase("database.db", SQLiteDatabase.CREATE_IF_NECESSARY, null);
                 db.setLocale(Locale.getDefault());
                 db.setLockingEnabled(true);
                 db.setVersion(1); 

                 String dropTableA = "DROP TABLE if exists databaseA";
                 String createTableA = "CREATE TABLE databaseA(" +
                 "_id INTEGER PRIMARY KEY AUTOINCREMENT, " +
                 "Nome TEXT, Telefone INTEGER)";

                 String dropTableB = "DROP TABLE if exists databaseB";
                 String createTableB = "CREATE TABLE databaseB(" +
                 "_id INTEGER PRIMARY KEY AUTOINCREMENT, " +
                 "Localidade TEXT, " +
                 "fk_dbA_id INTEGER NOT NULL CONSTRAINT dbA_id REFERENCES databaseA(_id) ON " +
                 "DELETE CASCADE)";

                 String nomeValue = nome.getText().toString();
                 String telValue = tel.getText().toString();
                 String localValue = local.getText().toString();
                 //PROBLEM MAY LIE HERE
                 String insertA = "insert into databaseA(_id, Nome, Telefone) values(1, "+nomeValue+", "+telValue+")"; 
                 //PROBLEM MAY LIE HERE
                 String insertB = "insert into databaseB(_id, Localidade, fk_dbA_id) values(1, "+localValue+", 1)"; 

                 db.execSQL(dropTableA);
                 db.execSQL(createTableA);
                 db.execSQL(dropTableB);
                 db.execSQL(createTableB);
                 db.execSQL(insertA);
                 db.execSQL(insertB);

Ответы [ 5 ]

1 голос
/ 09 января 2012
 String insertA = "insert into databaseA(_id, Nome, Telefone) values(1, "+nomeValue+", "+telValue+")"; 
             //PROBLEM MAY LIE HERE
             String insertB = "insert into databaseB(_id, Localidade, fk_dbA_id) values(1, "+localValue+", 1)"; 

Я думаю, вы можете написать это так:

 String insertA = "insert into databaseA(_id, Nome, Telefone) values(1, \""+nomeValue+"\", "+telValue+")"; 
             //PROBLEM MAY LIE HERE
             String insertB = "insert into databaseB(_id, Localidade, fk_dbA_id) values(1, \""+localValue+"\", 1)"; 
0 голосов
/ 09 января 2012

// изменить значение параметра String telValue на int.

int telValue = Integer.parseInt(tel.getText().toString());
0 голосов
/ 09 января 2012

db.execSQL ("INSERT INTO Playlist (name) Values ​​('" + name + "')");

0 голосов
/ 09 января 2012

Вы пытались добавить точки с запятой в свои операторы sql?

Вместо:

String createTableA = "CREATE TABLE databaseA(" +
             "_id INTEGER PRIMARY KEY AUTOINCREMENT, " +
             "Nome TEXT, Telefone INTEGER)";

Попробуйте:

String createTableA = "CREATE TABLE databaseA(" +
             "_id INTEGER PRIMARY KEY AUTOINCREMENT, " +
             "Nome TEXT, Telefone INTEGER);";

Я знаю, что в Oracle это важно.Я знаю в своем SQLite, я всегда включаю их, и мои работы.Я думаю ";"в Oracle / SQLite работает как «go» в Sybase.

0 голосов
/ 09 января 2012

Замените эти две строки:

String insertA = "insert into databaseA(_id, Nome, Telefone) values(1, '"+nomeValue+"', '"+telValue+"')"; 

         String insertB = "insert into databaseB(_id, Localidade, fk_dbA_id) values(1, '"+localValue+"', 1)"; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...