@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

SQLのWHERE句の条件式設定

投稿者投稿内容
hur0308
常連さん
会議室デビュー日: 2004/02/13
投稿数: 20
投稿日時: 2004-02-23 15:48
画面から入力されたTEXTBOXの内容をSQLのWHERE句に
設定したいのですが、うまくいきません。
(処理内容の … WHERE ID=? の所)
どうすればうまくいくのでしょうか?

◆処理内容
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim myConnString As String = "Data Source=orasrv;Password=usr1;User ID=usr1"
Dim mySelectQuery As String = "SELECT NAME FROM NCT050 WHERE ID=?"
Dim myConnection As New OracleConnection(myConnString)
Dim myCommand As New OracleCommand(mySelectQuery, myConnection)
myConnection.Open()
Dim myReader As OracleDataReader
myReader = myCommand.ExecuteReader()

While myReader.Read()
Label1.Text = myReader.GetString(0)
End While

myReader.Close()
myConnection.Close()

End Sub
dai
ベテラン
会議室デビュー日: 2001/08/28
投稿数: 85
投稿日時: 2004-02-23 16:19
Oracle のパラメータ指定は、":パラメータ名" となります。

引用:
Dim mySelectQuery As String = "SELECT NAME FROM NCT050 WHERE ID=?"


Dim mySelectQuery As String = "SELECT NAME FROM NCT050 WHERE ID=:param_id"

そして、パラメータに実際の値を入れるには、
myCommand.Parameters.Add("param_id", 実際のパラメータ)

です。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-02-23 16:58
 もう一つのスレッドで「Oracle7.3.4」とありましたが、.NET Framework Data Provider For Oracleは、Oracle8.1.7以降です。

 ODP.NETの方は、Oracle9.0.1からだったと思います。使用できる環境はよく確かめましょう。
hur0308
常連さん
会議室デビュー日: 2004/02/13
投稿数: 20
投稿日時: 2004-02-23 17:09
daiさん、ありがとうございました。
ご指摘の通り実行したらうまく行きました。

ついでといっては何ですが、Oracle接続先、ユーザー等(Dim myConnString As String = "Data Source= … ”)
を可変(例えば、iniファイルに設定するかWeb.config に定義する等)にしたいのですが
、ご存知でしたらご教授いただきたくお願いします。

素人で申し訳ありません。
一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2004-02-23 17:24
ConfigurationSettingsクラスを使えば、アプリケーション構成ファイル(Web.config)からデータを取得できます。
お試しください。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-02-23 17:47
引用:

hur0308さんの書き込み (2004-02-23 17:09) より:

ついでといっては何ですが、Oracle接続先、ユーザー等(Dim myConnString As String = "Data Source= … ”)
を可変(例えば、iniファイルに設定するかWeb.config に定義する等)にしたいのですが


 私はDataSource, User, Passwordのプロパティを持ったクラスを作り、バイナリシリアライザでファイルに保存しています。保存場所はWIN32APIでAll Users/Application Dataを取得しています。なので、アプリケーションドメインの境界を越えて共通に使用できています。(あ、共通プロジェクトを作っているんだから、それのconfigファイルに書けばいいのか)
dai
ベテラン
会議室デビュー日: 2001/08/28
投稿数: 85
投稿日時: 2004-02-24 09:45
僕もJittaさんと近いですね。
Web.configのadd要素は生理的に嫌いなので、独自のファイルにXMLシリアライズして、binディレクトリに保存しています。
主に読み取り専用(開発者が納品時に設定)ですけど。
hur0308
常連さん
会議室デビュー日: 2004/02/13
投稿数: 20
投稿日時: 2004-02-24 22:15
みなさん、ご回答ありがとうございました。
おかげで接続先を可変にすることができました。

今、悪戦苦闘しているのはOracleDataAdapterを使用し、
TEXTBOXの内容をSQLのWHERE句に設定したいのですが、
これもうまくいきません。(処理内容の … WHERE ID='abc' の所)
MSDNの記載内容等を参考に今日1日かけて試しましたが、まったくだめ
でした。知っている方がいましたらご教授お願いします。

◆処理内容
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As system.EventArgs) Handles Button1.Click
Dim myConnString As String = ConfigurationSettings.AppSettings("dBkey1")
Dim myConnection As New OracleConnection(myConnString)
myConnection.Open()
Dim mySelectQuery As String = "SELECT name FROM view WHERE id='abc'"
Dim ODA As New OracleDataAdapter(mySelectQuery, myConnection)
ODA.Fill(DataSet1)
DataGrid1.DataBind()
myConnection.Close()
End Sub

スキルアップ/キャリアアップ(JOB@IT)