DOBON.NET DOBON.NETプログラミング掲示板過去ログ

SQL Serverへの書込み

環境/言語:[XP、C#]
分類:[.NET]

インサートを使う時、下のようなソースを作りますが、

INSERT テーブル名 フィールド名, フィールド名 VALUES('値', '値');

テキストボックスに入力されたものを入れたい場合は下のようになると
思うのですが、

INSERT テーブル名 フィールド名, フィールド名 VALUES('textBox1.Text', 'textBox2.Text');

ラジオボタン(4つ)やチェックボックス(4つ)などの場合、どのような
ものをフィールド名や値に入れればいいのでしょうか?
■No12565に返信(ハッチさんの記事)
> インサートを使う時、下のようなソースを作りますが、
>
> INSERT テーブル名 フィールド名, フィールド名 VALUES('値', '値');
>
> テキストボックスに入力されたものを入れたい場合は下のようになると
> 思うのですが、
>
> INSERT テーブル名 フィールド名, フィールド名 VALUES('textBox1.Text', 'textBox2.Text');
>
> ラジオボタン(4つ)やチェックボックス(4つ)などの場合、どのような
> ものをフィールド名や値に入れればいいのでしょうか?

フィールド名ってテーブルの列名ですよね。
TextBoxの値であろうが、チェックボックスの値であろうが
意識しなくてもいいと思います。

値はCheckedプロパティの値を判定すればいいと思いますが?
2005/09/01(Thu) 11:20:06 編集(投稿者)

お世話になります。

■No12565に返信(ハッチさんの記事)
> ラジオボタン(4つ)やチェックボックス(4つ)などの場合、どのような
> ものをフィールド名や値に入れればいいのでしょうか?
これってデータ型の事を仰っていますか?

であればですが…
Insertした値を,後でSelectした時に
扱いやすいデータ型を使用されればよいのでは。

> INSERT テーブル名 フィールド名, フィールド名 VALUES('textBox1.Text', 'textBox2.Text');

これは,例えだとは思いますが…,
もし,そうでないなら,SQLインジェクションに気を使った方が良さそうな気がします…。

#日本語が変だったのを編集しました…。
回答ありがとうございます。

だとすると、ソースは下のようでいいのでしょうか?
ですが実際やってみましたが、どうもうまく行きません。

(例)血液型

INSERT テーブル名 血液型 VALUES('radioButton_Blood_A.Checked +
radioButton_Blood_B.Checked + radioButton_Blood_O.Checked +
radioButton_Blood_AB.Checked ');

すみません。プログラミング初心者なもので、何がなんだかさっぱり分からなくなってます。
  • 題名: Re[3]: SQL Serverへの書込み
  • 著者: なおこ(・∀・)
  • 日時: 2005/09/01 11:39:31
  • ID: 12570
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
お世話になります。

■No12569に返信(ハッチさんの記事)
> だとすると、ソースは下のようでいいのでしょうか?
> ですが実際やってみましたが、どうもうまく行きません。

どのようにうまくいきませんでしたか?

> (例)血液型
>
> INSERT テーブル名 血液型 VALUES('radioButton_Blood_A.Checked +
> radioButton_Blood_B.Checked + radioButton_Blood_O.Checked +
> radioButton_Blood_AB.Checked ');

血液型のデータ型は,何ですか?
■No12569に返信(ハッチさんの記事)
> (例)血液型
>
> INSERT テーブル名 血液型 VALUES('radioButton_Blood_A.Checked +
> radioButton_Blood_B.Checked + radioButton_Blood_O.Checked +
> radioButton_Blood_AB.Checked ');

実際には血液型を登録したいのですよね?

ラジオボタンのCheckedプロパティはBoolean型のため、値は「True」
または「False」になります。
そのため、4つのラジオボタンのどのラジオボタンが選択されているかは
Checkedプロパティを参照してプログラム側で判断しなければいけません。

どのラジオボタンが選択されているかわかればDBに登録する血液型も
わかりますよね?
SQL Serverでのデータ型は「tinyint」になっています。

フォームがロードされると、下のようなソースでデータが表示されるように
なっています(作ってもらったものなので、完全には理解できてません)。


switch( Convert.ToString(dataRow["血液型"]))
{ case "0": radioButton_Blood_A.Checked = true;
break;
case "1": radioButton_Blood_B.Checked = true;
break;
case "2": radioButton_Blood_O.Checked = true; break;
case "3": radioButton_Blood_AB.Checked = true; break;
}

これと関係してくるのでしょうか?
  • 題名: Re[3]: SQL Serverへの書込み
  • 著者: trapemiya
  • 日時: 2005/09/01 13:53:37
  • ID: 12576
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
う〜ん、データベースというものがどのようなものかを一通り勉強された方が良いと思います。急がば回れです。
血液型にしても、そのテーブルの仕様書(テーブルレイアウト)が無ければ、どの列にどのような値を入れて良いかわかりませんよね?
この状態で変にテーブルを更新してしまうと、アプリケーションが動かなくなりませんか?
Aなら0、Bなら1、Oなら2、ABなら3がtinyint型でテーブルに保存されているようですが、こういった約束事をきっちり知る必要があります。

また、SQL文にしても文字列連結という基本的なことを理解されていません。リテラル(')で囲まれるとどうなるのか? その辺りをおさえて下さい。

#こういったことは普通はストアドプロシージャでやってしまうのですが、SQL文がわからなければストアドプロシージャも書けないので、とりあえずはSQL文連結でがんばってみましょう。
  • 題名: Re[3]: SQL Serverへの書込み
  • 著者: なおこ(・∀・)
  • 日時: 2005/09/01 15:11:55
  • ID: 12583
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
お世話になります。

■No12573に返信(ハッチさんの記事)
> switch( Convert.ToString(dataRow["血液型"]))
> { case "0": radioButton_Blood_A.Checked = true;
> break;
> case "1": radioButton_Blood_B.Checked = true;
> break;
> case "2": radioButton_Blood_O.Checked = true; break;
> case "3": radioButton_Blood_AB.Checked = true; break;
> }

上記ソースから判断するに,
血液型というフィールドは一つで,
0〜3の値が入っていると思われます。

ということは,SQL文は
■No12569に返信(ハッチさんの記事)
> INSERT テーブル名 血液型 VALUES('radioButton_Blood_A.Checked +
> radioButton_Blood_B.Checked + radioButton_Blood_O.Checked +
> radioButton_Blood_AB.Checked ');
これだと,明らかにおかしい事はOKですか?

とりあえずtinyint型にどの様な値を入れる事ができるのか,
調べてみてはいかがでしょうか。
あと,RadioButton.Checkedプロパティの戻り値の型もチェックしてみましょう。

上記ソースは,フィールド「血液型」の値によって,
分岐して,ラジオボタンのチェックを入れていますよね。

なので,INSERTする時は,上記ソースの逆で,
ラジオボタンの値から
(if (radioButton_Blood_A.Checked){
  strBlood = "0";
 }
)見たいな感じで,0〜3という数字に変換し,
SQL文を組み立てる必要がありますよね。

DOBON.NET | プログラミング道 | プログラミング掲示板