質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

374閲覧

SQLite内データについて

syosinsyascript

総合スコア11

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2020/07/07 08:42

実現したいこと:SQLite内データ(address)に同一のデータがある場合も新規でINSERTしたい。

現状:同一データ(address)がある場合((data)が)上書き保存される。
PRIMARY KEYの使用は無し。
仕様として(data, address)===(既存データ(data, address))は無いものとする。

javascript

1 function create(){ 2     var domo = document.getElement('demo').value; 3     var add = document.getElement('add').value; 4 var db = window.openDatabase("Database", "1.0", "TestDatabase", 200000); 5 db.transaction(executeQuery); 6 function executeQuery(tx) { 7 tx.executeSql('DROP TABLE IF EXISTS TestTable'); 8 tx.executeSql('CREATE TABLE IF NOT EXISTS TestTable (data, address)'); 9 tx.executeSql('INSERT INTO testTable (data, address) value (?, ?)',[demo,add]); 10 }}

html

1 <input type="text" id="demo"> 2 <input type="text" id="add"> 3 <input type="button" onclick="create()">

知恵をお貸しください、お願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

知恵をお貸しください

SQL文を基礎から再確認しましょう(Google検索 SQLとは


SQLを使って操作するデータベースは、CSV(スプレッドシート)のようにイメージできるデータ保存領域と考えます。

#SQL DBスプレッドシート
1テーブルスプレッドシートそのもの
2フィールド1行目
3データ2行目以降

ご質問で 3行続けて tx.executeSql(); を実行していますが、
それぞれの SQL文を上記スプレッドシートで例えると以下のようになります。

  1. スプレッドシートがあれば破棄する。
  2. スプレッドシートがなければ、指定の1行目を書き込んだ形で作成する。
  3. スプレッドシート内の2行目以降に指定フィールドに指定値を入力する

1行目のSQL文は、create()関数内で実行せず、deleteTable() など、別の関数で実行すべきです。

投稿2020/07/07 09:21

AkitoshiManabe

総合スコア5434

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

syosinsyascript

2020/07/07 10:32

SQL文を別関数で扱うことは理解できました。ありがとうございます。 ちなみに保存値を重複に保存する方法もご存じでしたら、ご教授いただきたいです。
AkitoshiManabe

2020/07/07 11:03 編集

UPDATE文を失念していませんか?データ操作(INSERT文/SELECT文/UPDATE文/DELETE文)も機能毎にjavascript関数を分けてもいいかもしれませんね。SQL文を構築しやすくするためにも、参考となる書籍をデスク脇に用意するとか、備忘録(テキストファイルでも十分)をまとめると、後々、悩まずに済みますよ。 久々に「ポケットリファレンスSQL(https://amzn.to/3iNBAaK)」を開きました
syosinsyascript

2020/07/08 08:08

丁寧な説明ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問