過去ログ:     キーワード: 条件: 表示:

[1955] SQLiteのUNIQUE使用時のエラー

投稿日 18/01/15-00:47
投稿者 うなぎいぬ
参照先

ゆうと様
ツイッターで何度か質問をさせていただいた者です。先日はツイッター内での質問にもかかわらずお答えをいただきありがとうございました。

現在、郵便局から提供されている郵便番号データを使ってSQLiteのデータ作成用のプログラムの作成を行っています。(現在テスト用に件数の少ない香川県のデータを使用しています。)
その際に、データの中に同じ番号が稀に存在するらしく(UNIQUE)指定をしてから次のようなエラーが度々発生します。

「SQLiteException constraint failed
UNIQUE constraint failed: ubin2.ycode1
場所 System.Data.SQLite.SQLite3.Reset(SQLiteStatement stmt)
場所 System.Data.SQLite.SQLite3.Step(SQLiteStatement stmt)
場所 System.Data.SQLite.SQLiteDataReader.NextResult()
場所 System.Data.SQLite.SQLiteDataReader..ctor」

その対応処理として「例外監視」で読み飛ばしたいのですがどのような対応をすればよいのでしょうか?

現在はエラー時に「続ける」事で対応できているのですが、全国となると対応しきれないので、その対応方法をご教授していただけないでしょうか下さい。

▲pagetop

[1956] Re: SQLiteのUNIQUE使用時のエラー

投稿日 18/01/15-01:02
投稿者 うなぎいぬ
参照先

> ゆうと様
> ツイッターで何度か質問をさせていただいた者です。先日はツイッター内での質問にもかかわらずお答えをいただきありがとうございました。
>
> 現在、郵便局から提供されている郵便番号データを使ってSQLiteのデータ作成用のプログラムの作成を行っています。(現在テスト用に件数の少ない香川県のデータを使用しています。)

プログラムを全行載せることが出来るようなので追記させていただきます。

//
// 郵便番号SQL作成02
//
// プロデルからSQLiteデータベースを操作する例 //
//SQLiteを利用するには、System.Data.SQLite.dllが必要です
「Produire.Data.SQLite.dll」を利用する

例外監視
  内容は、「SQLiteException constraint failed」
発生した場合
  進む
監視終わり

SQLiteというSQLiteデータベースを作る
SQLiteのデータソースを、「test01.db」に変える
SQLiteへ接続する

//CSVファイルをデータ表に読み込み保存されているデータを取得。
データ表を作ってデータとする
データへ「37KAGAWA.csv」から読み込む //香川県の郵便番号データ(件数が少ない為)
一覧は、データの一覧
カウント=0
テーブルを、作成する // テーブルを作成します

データの一覧のすべての【行要素】についてそれぞれ繰り返す
  カウント=カウント+1  //行要素で良いはずなのですがエラーが出るのでカウントを作ります。
  レコードは、一覧(カウント)  //一覧にCSVデータを読み込みます
  //レコードを報告する
  郵便番号は、レコード(3)// 郵便番号7ケタ (キーとして使用する)
  都道府県は、レコード(7)//都道府県・漢字
  市町村は、レコード(8)//市町村・漢字
  町名は、レコード(9)//町名・漢字

  //SQLiteにデータを書き込みます
  データを、追加する

繰り返し終わり

//最後に作成したデータをSQLiteで読み込んで表示します
データを、取得する


テーブルを、作成する手順
  ーーテーブルの作成 テーブル名 ubin
  //1.ycode1 =郵便番号 キーとして使用
  SQLiteで「CREATE TABLE ubin2 (
    ycode1 TEXT UNIQUE,
    ken TEXT,
    city TEXT,
    machi TEXT)」を実行する
終わり


データを、取得する手順
  ーーデータの取得
  SQLiteから「SELECT * FROM ubin2」を取得して結果とする
  「初期状態」として結果の内容を情報アイコンで表示する
終わり

データを、追加する手順
  ーーデータの追加
  SQL文は、「INSERT INTO ubin2 (ycode1,ken,city,machi) VALUES(?,?,?,?);」
  バインド値は、{郵便番号,都道府県,市町村,町名}
  //バインド値を報告する
  SQL文をバインド値としてSQLiteで実行する

終わり

▲pagetop

[1961] Re^2: SQLiteのUNIQUE使用時のエラー

投稿日 18/01/20-00:42
投稿者 ゆうと
参照先

こんにちは ゆうとです。

例外監視文は、「例外監視」の後に、エラーが起こる可能性があるプログラムを書きます。

例外監視文については、次のアドレスに簡単な説明があります。
https://rdr.utopiat.net/docs/onepage/syntax.html#trycatch

SQLiteのエラーメッセージを無視させたい場合には、次のようにプログラムを書いてください。
------------
例外監視
  SQL文をバインド値としてSQLiteで実行する
発生した場合
監視終わり
------------

参考になれば幸いです。

▲pagetop
▲ページの先頭へ

- WebForum -