2010-02-04 2 views
3

Я использую flex для разработки своего первого приложения для рабочего стола, и я также работаю с sqlite в первый раз.sqlite & flex - вставить, если не существует?

Я создаю свою базу данных и все таблицы, и я также хотел бы добавить несколько строк данных в пару таблиц, чтобы пользователи имели некоторые данные для работы при первой установке.

Единственная проблема, с которой я столкнулся, - каждый раз, когда я запускаю программу, она снова и снова вставляет одни и те же данные.

Мне просто интересно, возможно ли это сделать - ВСТАВИТЬ, ЕСЛИ НЕ СУЩЕСТВУЕТ. или какой-то другой вид работы.

спасибо!

+0

Там в ловушке, хотя здесь. Вы хотите, чтобы данные там были установлены, но если пользователь удаляет его, он должен уйти. По вашему описанию он вставляет каждый раз, когда вы запускаете. Не уверен в решении, но я вижу, что это проблема. – invertedSpear

ответ

1

Спасибо за понимание, но мне все еще не повезло.

Вот мой код

stmt.text = "CREATE TABLE IF NOT EXISTS tbl_breed ("+" breed_id INTEGER PRIMARY KEY AUTOINCREMENT, "+" breed_breed TEXT)"; 
stmt.execute(); 
stmt.text = "INSERT OR IGNORE INTO tbl_breed (breed_breed)"+" VALUES ('Test')"; 
stmt.execute(); 

Ok, так что я исправил проблему - я думаю, вы должны упорно кода первичного ключа вот что я сделал

stmt.text = "CREATE TABLE IF NOT EXISTS tbl_breed ("+" breed_id INTEGER PRIMARY KEY AUTOINCREMENT, "+" breed_breed TEXT)"; 
stmt.execute(); 
stmt.text = "INSERT OR IGNORE INTO tbl_breed (breed_id,breed_breed)"+" VALUES ('1','test')"; 
stmt.execute(); 
+0

Во-первых, формат Stackoverflow немного отличается от форумов, вы должны действительно изменить свой вопрос и включить в него этот код. Что касается самого кода, вы каждый раз создаете новый первичный ключ, вы должны вставлять дубликат явно, поэтому ограничение нарушается, а строка игнорируется. –

+0

См. Обновленный ответ. И не забудьте отредактировать свой quesiton. :) –

4

Вставка повторяющихся данных с таким же первичным ключом и использовать положение о «Ignore» конфликт:

sqlite> create table t(i integer primary key not null); 
sqlite> insert into t values(1); 
sqlite> insert or ignore into t values(1); 
sqlite> select * from t; 
1 

Повторяющиеся значения не будут вставлены, и заявление будет успешно завершена.

В качестве альтернативы, вы можете использовать «UNIQUE» ограничение вместо первичного ключа:

sqlite> create table t(i integer unique not null); 
sqlite> insert into t values(1); 
sqlite> insert or ignore into t values(1); 
sqlite> select * from t; 
1 

Идея заключается в том, что некоторые ограничения будут получать нарушается и строка будет игнорироваться.

+0

Спасибо за понимание, но мне все еще не повезло ... – Adam

Смежные вопросы