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

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

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

Re[7]: Mysqlデータベースパラメータクエリ、解決できません。。。


(過去ログ 53 を表示中)

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

■29364 / inTopicNo.1)  Mysqlデータベースパラメータクエリ、解決できません。。。
  
□投稿者/ ガチャピン (6回)-(2008/12/09(Tue) 03:16:17)

分類:[.NET 全般] 

テキストボックスに値を入力しButtonをクリックするとポストバックを発生させ、DataGridにテーブルの値が返ってくるように設定したいのですが、できません。。
下記がソースです。
  
  '--------------------------------------------------------------------------------
    ' データを取得する
    '--------------------------------------------------------------------------------
    Function GetGoodsDataByCategory(ByVal category As String) As MySqlDataReader '戻り値取得したデータを保持するMySqlDataReaderオブジェクト
        Dim cn As New MySqlConnection   'OleDbConnectionオブジェクト
        Dim cmd As New MySqlCommand     'OleDbCommandオブジェクト
        Dim dr As MySqlDataReader       'OleDbDataReaderオブジェクト

        '接続情報
        cn.ConnectionString = _
        ConfigurationManager.ConnectionStrings("OrderConnectionString").ConnectionString

        'SELECTコマンド
        cmd.Connection = cn
        cmd.CommandText = "SELECT * FROM goods WHERE (category ='?category')"

        'パラメータに値を代入
        cmd.Parameters.AddWithValue("?category", category)
        '実行
        cn.Open()
        dr = cmd.ExecuteReader(CommandBehavior.CloseConnection)

        Return dr

    End Function


結局のところここで頂いたサンプルをそのまま行ってみたのですが結局反応せず。。
コントロールのプロパティ設定も間違っていないと思うのですが。。。
@とかにしてもダメでした。。。
SELECTでテーブルのデータを全て出すことはできるので、やはりSQL文とcmd.Parametersのところだとは思うんですが、どうでしょう。。

引用返信 編集キー/
■29367 / inTopicNo.2)  Re[1]: Mysqlデータベースパラメータクエリ、解決できません。。。
□投稿者/ たくボン (98回)-(2008/12/09(Tue) 08:10:05)
No29364 (ガチャピン さん) に返信
> 'パラメータに値を代入
> cmd.Parameters.AddWithValue("?category", category)
> SELECTでテーブルのデータを全て出すことはできるので、やはりSQL文とcmd.Parametersのところだとは思うんですが、どうでしょう。。

今、出張中なので環境がないため調査できませんが、Pramaters.Add()で明示的に型を指定してもダメでした?
引用返信 編集キー/
■29369 / inTopicNo.3)  Re[2]: Mysqlデータベースパラメータクエリ、解決できません。。。
□投稿者/ ロック (142回)-(2008/12/09(Tue) 08:58:46)
パッとみて、すぐ思ったのを
>cmd.CommandText = "SELECT * FROM goods WHERE (category ='?category')"

cmd.CommandText = "SELECT * FROM goods WHERE (category =?category)"
とか?

パラメータ部分が文字列扱いになっているからとか、そういう簡単な話じゃないのかな
ちなみに、「?」初めてみました(汗)ずっと「@」しか使ってなかったので。。。
ちょっと勉強してきます。

引用返信 編集キー/
■29371 / inTopicNo.4)  Re[3]: Mysqlデータベースパラメータクエリ、解決できません。。。
□投稿者/ みきぬ (281回)-(2008/12/09(Tue) 09:31:03)
No29369 (ロック さん) に返信
> ちなみに、「?」初めてみました(汗)ずっと「@」しか使ってなかったので。。。
> ちょっと勉強してきます。
>
おそらく、Connector/NET ですね。
? + パラメータ名 という形式が使えます。
引用返信 編集キー/
■29373 / inTopicNo.5)  Re[4]: Mysqlデータベースパラメータクエリ、解決できません。。。
□投稿者/ かたぎり (1回)-(2008/12/09(Tue) 09:34:51)
シングルコーテーション「’」を取るに一票。

動かないときは、色々といじってみるのが大事ですです。
コピペしただけじゃもったいないですよん

Where句のないSQL文でためす→動くか動かないか
 →動けばWhere句が悪い
 →動かない→SQL文全体が悪い

こんなカンジで段階的に動作を切り分けて原因を考えていくクセを付けとくと
ただ動かすよりも沢山のことが勉強になりますよ。

引用返信 編集キー/
■29374 / inTopicNo.6)  Re[5]: Mysqlデータベースパラメータクエリ、解決できません。。。
□投稿者/ やじゅ (845回)-(2008/12/09(Tue) 09:37:20)
やじゅ さんの Web サイト
No29373 (かたぎり さん) に返信
> シングルコーテーション「’」を取るに一票。
>

そうですね、私は示した例が悪かったです。
だって、最初にシングルコーテーション付いてたから・・・(^^;

WHERE (category ='?')

WHERE (category ='?category')

WHERE (category =?category)

引用返信 編集キー/
■29380 / inTopicNo.7)  Re[6]: Mysqlデータベースパラメータクエリ、解決できません。。。
□投稿者/ ロック (143回)-(2008/12/09(Tue) 09:58:35)
>おそらく、Connector/NET ですね。
みきぬさん、いつもありがとうございます。
ADO.NETから遡って調べていたところでした(全然方向が違いましたね。。。)
おかげですっきりしました。

自信が無かったですが
> シングルコーテーション「’」を取るに一票。
で良いみたいですね
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=29795&forum=7&7

引用返信 編集キー/
■29451 / inTopicNo.8)  Re[7]: Mysqlデータベースパラメータクエリ、解決できません。。。
□投稿者/ ガチャピン (7回)-(2008/12/09(Tue) 21:32:50)
>たくボン
>Pramaters.Add()で明示的に型を指定してもダメでした?
すいません。そのような方法が分からなかったです。。検証方法として明示的に上記のように型を指定してみるのも一つの方法であるんですね!!まだ試していませんが勉強になりました!

>パラメータ部分が文字列扱いになっているからとか、そういう簡単な話じゃないのかな
ちなみに、「?」初めてみました(汗)ずっと「@」しか使ってなかったので。。。

お互い発見できましたねw僕は?も@もあるなんて!!って思いましたw
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -