C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[7]: データのチェックと登録について


(過去ログ 27 を表示中)

[トピック内 9 記事 (1 - 9 表示)]  << 0 >>

■12489 / inTopicNo.1)  データのチェックと登録について
  
□投稿者/ ミントチョコ (1回)-(2008/01/10(Thu) 11:57:59)

分類:[C#] 

去年からC#の勉強を初めてまして基本は理解できたかなと思い、データベース更新プログラムを
作ってみようとやってる最中に疑問が出てきたので質問させてください。

質問1
データベースの項目が、「管理番号,アルバム名,アーティスト名,メーカー,価格」で、この項目を登録、編集させようと思います。
この項目の入力について入力文字の検査するが必要があると思い追加しようと思うのですが
チェックする場合は、Validatingメソッドで項目単位に行うのでしょうか?
それとも、データ登録ボタンをクリック後、まとめて行うのが一般的でしょうか?

質問2
サンプルでは、編集を行う前に、管理番号でデータを検索してDataSetに取得して
DataSetからテーブルを取得して、データを表示するところまでは作れました。

データの更新を行う部分を考えているのですが、更新用のSQLを作成する時には、
TextBoxのデータをまず変数に代入して、このような感じでSQLを作成しようと思います

string pKey = textBox1.Text;
string title = textBox2.Text;
string artist = textBox3.Text;
string maker = textBox4.Text;
string price = textBox5.Text;

string strSqlTxt = "INSERT INTO ALBUM(pKey,title,artist,maker,price)
VALUES('1','アルバム名','アーティスト','メーカー','3000円')";

自分で考えたので正しいかどうか不安で。
もっと他の方法があるのでは・・・と検索とかしてみたのですが見つけることができず。
この方法で問題はないでしょうか・・・?

変な質問ですみません。
よろしくお願いします。


引用返信 編集キー/
■12491 / inTopicNo.2)  Re[1]: データのチェックと登録について
□投稿者/ はつね (389回)-(2008/01/10(Thu) 12:14:31)
はつね さんの Web サイト
質問は分けた方がいいよ。質問2だけ回答

No12489 (ミントチョコ さん) に返信
> データの更新を行う部分を考えているのですが、更新用のSQLを作成する時には、
> TextBoxのデータをまず変数に代入して、このような感じでSQLを作成しようと思います
>
> string pKey = textBox1.Text;
> string title = textBox2.Text;
> string artist = textBox3.Text;
> string maker = textBox4.Text;
> string price = textBox5.Text;
>
> string strSqlTxt = "INSERT INTO ALBUM(pKey,title,artist,maker,price)
> VALUES('1','アルバム名','アーティスト','メーカー','3000円')";

C#上の変数とSQL文に記載する変数は無関係ですので、上記ではダメです。
お使いになっているのがADO.NETであるならば、ADO.NETのParametersにTextBoxの値を入れて、Parametersに指定した変数名でSQL文を記述します。
SQL文の細かな文法などはお使いになるデータベースの種類やADO.NETでのクラスライブラリ(正確な言い方ではありません)により異なりますので、その辺りの情報も載せた方が具体的な回答を得られるでしょう。

引用返信 編集キー/
■12493 / inTopicNo.3)  Re[2]: データのチェックと登録について
□投稿者/ ミントチョコ (2回)-(2008/01/10(Thu) 13:11:14)
2008/01/10(Thu) 13:12:03 編集(投稿者)

はつねさん回答ありがとうございます。

> 質問は分けた方がいいよ。質問2だけ回答

すいません。今度からわけるようにします。

> SQL文の細かな文法などはお使いになるデータベースの種類やADO.NETでのクラスライブラリ(正確な言い方ではありません)により異なりますので、その辺りの情報も載せた方が具体的な回答を得られるでしょう。

情報不足ですみません。
使用しているデータベースはMySQLで、マイクロソフトのサイトからODBC.NETをダウンロードして、ドライバは↓のサイトからダウンロードして使ってます。
http://dev.mysql.com/downloads/connector/odbc/3.51.html

Parametersというのは初めてみたので、いただいた情報をもとに検索してみます。
ありがとうございました。
引用返信 編集キー/
■12496 / inTopicNo.4)  Re[3]: データのチェックと登録について
□投稿者/ Mr.T (167回)-(2008/01/10(Thu) 14:04:38)
Mr.Tです、こんにちは。

> Parametersというのは初めてみたので、いただいた情報をもとに検索してみます。
> ありがとうございました。

WebアプリケーションでDBアクセスするとき、SQLを記述するための基本は
strSQL = "Select 年齢 from わんくま同盟 where 人='" + HumanName + "'"
のような形です。
無論、HumanNameはC#側の変数です。
DBにSQLを渡すのは、SQL文である文字列を渡すことを念頭においてください。


引用返信 編集キー/
■12497 / inTopicNo.5)  Re[4]: データのチェックと登録について
□投稿者/ ミントチョコ (3回)-(2008/01/10(Thu) 14:16:39)
No12496 (Mr.T さん) に返信
> Mr.Tです、こんにちは。

レスありがとうございます。

> DBにSQLを渡すのは、SQL文である文字列を渡すことを念頭においてください。

このような感じになるのでしょうか。

string strPkey = textBox1.Text;
string strTitle = textBox2.Text;
string strArtist = textBox3.Text;
string strMaker = textBox4.Text;
string strPrice = textBox5.Text;

string strSqlTxt = "INSERT INTO ALBUM(pKey,title,artist,maker,price) VALUES(" + strPkey + "," + strTitle + "," + strArtist + "," + strMaker + "," + strPrice+ ")";



引用返信 編集キー/
■12498 / inTopicNo.6)  Re[5]: データのチェックと登録について
□投稿者/ はつね (390回)-(2008/01/10(Thu) 15:02:02)
はつね さんの Web サイト
No12497 (ミントチョコ さん) に返信
>>DBにSQLを渡すのは、SQL文である文字列を渡すことを念頭においてください。
> 
> このような感じになるのでしょうか。
> string strSqlTxt = "INSERT INTO ALBUM(pKey,title,artist,maker,price) VALUES(" + strPkey + "," + strTitle + "," + strArtist + "," + strMaker + "," + strPrice+ ")";

MySQLがうまく処理してくれるかはわからないけれど、文字列入れるならば「'」でくくった方がいいでしょう。
また、画面からの入力値をそのままSQL文の文字列に入れてしまっては、例えば、「,」や「'」なんかを入れられたときにエラーになります。
Parameters使えるならこのあたりは気にしなくていいけれど、上記のような感じでSQL文を組み立てるならば問題ない形式に(例えば、
「'」だったら「''」にするなど)変換してから組み立てるか、入力できないようにガードするかなどが必要です。

引用返信 編集キー/
■12499 / inTopicNo.7)  Re[5]: データのチェックと登録について
□投稿者/ Mr.T (168回)-(2008/01/10(Thu) 15:03:27)
No12497 (ミントチョコ さん) に返信
> ■No12496 (Mr.T さん) に返信
>>Mr.Tです、こんにちは。
>
> レスありがとうございます。
>
>>DBにSQLを渡すのは、SQL文である文字列を渡すことを念頭においてください。
>
> このような感じになるのでしょうか。
>
> string strPkey = textBox1.Text;
> string strTitle = textBox2.Text;
> string strArtist = textBox3.Text;
> string strMaker = textBox4.Text;
> string strPrice = textBox5.Text;
>
> string strSqlTxt = "INSERT INTO ALBUM(pKey,title,artist,maker,price) VALUES(" + strPkey + "," + strTitle + "," + strArtist + "," + strMaker + "," + strPrice+ ")";

おそらく、それではだめです。
なぜ、と思うなら出来上がるSQL文を直接MySQLに流してみてください。

titleや、artistがvarcharなどのような文字型フィールドになっていませんか?
その場合は、''で囲う必要があります。
だから、
values ('" + strPkey + "','"....

のような書き方をしてください。

なおかつ、こういうSQLの作成方法ではSQLインジェクション作ってしまう可能性があるため
Parametersを利用すると楽チンになる、ということです。




引用返信 編集キー/
■12500 / inTopicNo.8)  Re[6]: データのチェックと登録について
□投稿者/ Mr.T (169回)-(2008/01/10(Thu) 15:04:05)
うお、出遅れた...

引用返信 編集キー/
■12501 / inTopicNo.9)  Re[7]: データのチェックと登録について
□投稿者/ ミントチョコ (4回)-(2008/01/10(Thu) 15:30:05)
No12500 (Mr.T さん) に返信

たびたびありがとうございます。
今回のは全て文字列なので「'」で囲むこととします。

Parametersを利用する方法も勉強したいと思います。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -