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

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

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

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

Q&A

解決済

2回答

2291閲覧

C# データベース INSERT INTOについて

Kei_Saxop

総合スコア11

C#

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

0グッド

1クリップ

投稿2019/04/30 07:10

こんにちは。全くの初心者なのですが、わからないところがあるので質問させていただきます。
環境:Visual Studio 2019
DB接続:Access 2019 .mdb形式 OLEDB
言語:C#
データベースに新規レコードを追加したいです。
今、デザイナーでTextbox1 Textbox2 Textbox3・・・とあり、データベースの縦列はA B C・・・とあります。
Textbox1に入力された値をA、Textbox2はB、Textbox3はCに入れたいのですが、、、できません。
テーブル名はSheet1です。
どうすればよいでしょうか?

C#

1String sCS = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:~~~~~.mdb"; 2 OleDbConnection oleConn = new OleDbConnection(sCS); 3 OleDbCommand oleCmd = new OleDbCommand(); 4 int iRet; 5 oleConn.Open(); 6 7 oleCmd.Connection = oleConn; 8 oleCmd.CommandText = "INSERT INTO sheet1 (A,B,C)" 9 + "VALUES(Textbox1.Text,Textbox2.Text,Textbox3.Text)";

あ、A,B,CとかTextbox1とかはここに載せるための仮名です。

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

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

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

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

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

guest

回答2

0

ベストアンサー

リテラルは ' と ' で囲う必要があると思いますが?

SQL の構文をググって調べるなどしましょう。sql insert などをキーワードにググれば参考になる記事が多々ヒットすると思います。例えば下記:

データの登録を行うINSERT文
https://www.atmarkit.co.jp/ait/articles/0104/11/news002.html

あと、ユーザー入力で SQL の文字列を組み立てるのは、SQL インジェクションをやってくださいと言ってるようなものです。今の問題が解決したら、次のステップとして必ずパラメータ化することを考えてください。

投稿2019/04/30 07:28

編集2019/04/30 07:29
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

Kei_Saxop

2019/04/30 07:43

なるほど、申し訳ないです。 Insert については分かりました。しかし、insert into --- values---- のvaluesの後、textbox1 に入力された内容を入力するコードが分かりません。 多分、基本中の基本でしょうが… どうやって調べればいいかもわからずで…すみません。
退会済みユーザー

退会済みユーザー

2019/04/30 08:26 編集

まず、TextBox 入力はちょっと置いといて、単純に INSERT クエリの文字列を、例えば以下のように組み立てて、 oleCmd.CommandText = "INSERT INTO sheet1 (A,B,C) VALUES('A', 'B', 'C')"; それを試してみたらどうなりますか? そういう単純な形で、A, B, C が INSERT できることをまず確実にしてください。
Kei_Saxop

2019/04/30 14:43

ありがとうございます。 また出直してきます。
guest

0

そのコードの下にこれを入れましょう。

C#

1oleCmd.ExecuteNonQuery();

TextBox1の入れ方

TextBox1.Textの内容をstring変数に入れるのにいつもどうやってされていますか?
CommandTextはstringですよ。マウスポインターをCommandTextに当てて見てください、ビュー表示が出ますのでstringと表示されているかと思います。
入力文字との文字列の連結をまず学習されると良いかもしれません。

すでに回答も出ていますように入力をそのままSQL文に当てるのは良くないので
この問題が解決されたら
OleDbCommandクラスのParameters.Add();やParameters().Value = 値;
を調べてみてください。

投稿2019/04/30 13:32

shinami

総合スコア334

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問