2012-01-22 13 views
1

私は単純なデータベースを扱っています。 3つの列があります。 _id(整数主キー自動インクリメント)、jobnumber(text unique not null)およびjobpart(text not null)。android SQLiteが "not null"制約を遵守していない

私は2つのEditTextウィジェットを持つダイアログを使用して入力を取得し、ボタンを押すとデータベースに追加します。

jobnumberを入力してもjobpartは空のままにしておくと、レコードが追加されないことが予想されます。しかし、それが追加されて、私は空の求人を取得します。私は "挿入"を使用していました。見て、私はおそらく、代わりに "insertWithOnConflict"を使用する必要があると思ったが、それは違いをもたらすように見えなかった、同じことが起こった。

私の次の思考は、空の文字列がnull値としてカウントされませんでしたので、私は次のことを試してみました多分だった:

if (jobpart == "") { 
    jobpart1 = null; 
}else{ 
    jobpart1 = jobpart; 
} 

同じことが起こった、データベースがさえ内の空のスロットをしゃっくりと入れませんでした

私はSQLのドキュメントを調べ始めました。おそらく暗黙的なデフォルトが使用されているので、私は厳密なモードにdbを設定する必要があるのだろうか?私はサーバ関連の部分を見つけましたが、ここにも当てはまるとは思えません。 (データベースの作成時には?dbで開く?)。

+0

は、あなたが挿入を行うために使用しているコードを投稿することができますか? – tomtheguvnor

答えて

3

することができますしてみてくださいポインタを比較します。

すなわちあなたが欲しい:

if (jobpart.equals("")) { 
+0

Doh。私はそれがずっと前のクラスから知っていた。あなたの推薦された変更を行いました。要約すると、それを私の基本的な質問/問題に関連付けるには...空の文字列は、**はNULLに相当しません**ので、SQLコマンドが空の行のために失敗することを期待して動作するつもりはありませんでした。助けてくれてありがとう! – Barak

2

この

if (jobpart.matches("")) { 
jobpart1 = null; 
}else{ 
jobpart1 = jobpart; 
} 

またはユーザーにequals()方法をあなたが必要とする文字列を比較するとき、あなたがいない==Stringよう==ちょうどオブジェクトである、彼らはedittextsで何かを入力してください

+0

私はおそらく彼らが完了する前に何かを入力するようになるだろうが、それは裸の骨だけですので、私は空の文字列をnullに単純に変更することから始めるつもりです。助けてくれてありがとう! – Barak

関連する問題