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

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

新規登録して質問してみよう
ただいま回答率
85.49%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

解決済

1回答

32469閲覧

[SQL]MS Accessで複数のレコードをまとめてINSERTしたい

makiikeda1216

総合スコア128

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

0クリップ

投稿2015/02/04 06:31

c#でOleDbCommandを使ってDBにレコードを登録するコードを書いているのですが。

たとえば、
MySQLで複数行をまとめてINSERTするSQL構文を発行したい場合、

lang

1INSERT INTO Table (F1,F2,F3,F4) VALUES (1,2,3,4),(5,6,7,8),(9,10,11,12)

みたいな感じに簡単に書けるのですが、
MS Accessの場合、上記のコードだとエラーになってしまいます。

なぜまとめてINSERTしたいと思ったかと言うと、上の例で言えば

lang

1INSERT INTO Table (F1,F2,F3,F4) VALUES (1,2,3,4) 2INSERT INTO Table (F1,F2,F3,F4) VALUES (5,6,7,8) 3INSERT INTO Table (F1,F2,F3,F4) VALUES (9,10,11,12) 4

だと3回クエリを発行することになってしまうので、まとめたほうが処理が早いと思ったからです。

ここで皆さんに質問したいことが2つあります。

1つ目:MS Accessで複数行をまとめてINSERTしたい場合はどのようにすればいいでしょうか?
2つ目:MS AccessでまとめてINSERTする方法があった場合、処理速度は速くなるでしょうか?(他のDBMS全般でも知っていれば教えてください)

どなたかご教授おねがいします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

借り物の回答でごめんなさい。
1についてです。
Access2013では複数登録できるみたいです。

ttps://msdn.microsoft.com/JA-JP/library/office/ff834799.aspx

上記ような感じでおそらくお使いのバージョンに関する仕様も記載されているかと思いますので調べてみると良いかもしれません。

尚、私はこれを知らずに1件ずつ突っ込んでいた愚か者ですorz

投稿2015/02/04 07:49

Ryzna

総合スコア85

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

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

makiikeda1216

2015/02/04 10:04

Ryznaさん早速の回答ありがとうございます! 参考のURLを拝見させていただきました。やはり、バージョンによって複数追加の構文がつかえないかもしれないですOTL 現在いじっているファイルのバージョンが2000から2007のどれかなのですが使えないようなので2007未満のバージョンみたいです。バージョンに関するReferenceも2007-2013までしか書いていないのでそれ以下のバージョンで複数追加ができるのかわかりませんでしたOTL とりあえず一件ずつ追加で様子みようと思います。
Ryzna

2015/02/04 13:30

OleDbCommand.CommandText に複数行まとめて突っ込んで実行したら駄目かしら。 postgresqlですが、複数のCreate Tableをまとめて実行してるなう。。。。 多少はマシかなぁ~なんて・・・
makiikeda1216

2015/02/05 01:01

CommandTextをつかうのが一番いいかもしれませんね。試してみたいと思います。 あと MSのリファレンスが読みづらくて、クエリの作り方がわからず四苦八苦していたのですが、こんな感じにすると複数行追加できることがわかりました。 INSERT INTO [Table] (F1, F2, F3, F4) SELECT F1, F2, F3, F4 FROM (SELECT 1 AS F1, 2 AS F2, 3 AS F3, 4 AS F4 FROM Dummy UNION ALL SELECT 5 AS F1, 6 AS F2, 7 AS F3, 8 AS F4 FROM Dummy Dummy_2) Dummy_1 ただこれだとDummyテーブルが存在している前提で追加しなくてはいけないのと、処理の効率が一件ずつと比べて早いのかと考えてみるととてもあやしい気がしてきました。。。
Ryzna

2015/02/05 01:36

ど素人の私としてはもう何がなにやら・・・って感じですな。。。 何行追加されるのかも読み解けませんでした。。。。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問