
VB.Netを始めて一ヶ月。
DB接続は出来たもののREADのみで、更新処理が全く出来ません。
何が悪いのか、どうすればいいのかもわからず途方に暮れています。
どなたかお知恵をお貸し下さい。
下記にプログラムを記載します。
■◇■ 共通定数 ■◇■
Public gstrSysd As String = "DSN=DbName;UID=UserId;PWD=Password"
一部名称を変更しています。
■◇■ Readプログラム ■◇■
Public Sub psubDBReadK(ByVal strSql As String, Optional ByVal intDcnt As Integer = 0)
Dim godbSysd As New OdbcConnection(gstrSysd)
godbSysd.Open()
Dim odbCom As New OdbcCommand(strSql, godbSysd)
Dim odbRead As OdbcDataReader = odbCom.ExecuteReader(CommandBehavior.CloseConnection)
Dim intLcnt As Integer
Erase gtblDb
glngDcnt = 0
While odbRead.Read()
glngDcnt = glngDcnt + 1
ReDim Preserve gtblDb(intDcnt, glngDcnt)
For intLcnt = 1 To intDcnt
If IsDBNull(odbRead.GetValue(intLcnt - 1)) Then
gtblDb(intLcnt, glngDcnt) = ""
Else
gtblDb(intLcnt, glngDcnt) = Trim(odbRead.GetString(intLcnt - 1))
End If
Next intLcnt
End While
odbRead.Close()
godbSysd.Close()
End Sub
上記モジュールをSQL文を作成してCallします。
strSql = ""
strSql = strSql & "SELECT Mm, Wd, Dd, Nm "
strSql = strSql & " FROM TableName "
strSql = strSql & "WHERE Fd <= '" & lngYear & "' "
strSql = strSql & " AND Ed >= '" & lngYear & "' "
strSql = strSql & "ORDER BY Mm, Wd, Dd "
Call psubDBReadK(strSql, 4)
ここまでは動作確認も出来ましたが、問題はWRITE処理です。
■◇■ WRITEプログラム ■◇■
Public Sub psubDbWriteK(ByVal strSql As String)
Dim odbSysd As New OdbcConnection(gstrSysd)
odbSysd.Open()
Dim odbCom As New OdbcCommand(strSql, odbSysd)
odbCom.Connection.Open()
odbCom.ExecuteNonQuery()
odbSysd.Close()
End Sub
上記コードだとコネクションのオープン時に『既に開かれています』のエラーとなりました。
同コードを削除するとエグゼキュートノンクエリーにて『システムエラー』となり、やはり上手く動作していないようです。
同様にOdbcDataAdapterを使う方法も試してみましたが上手くいきませんでした。
DBアクセスの方法はいくつかあると思いますが、SELECT句と同様の方法でINSERT、UPDATEも行いたいのですが、どうすれば良いのでしょうか?
環境
OS WIN2K
VS.Net Professional(VB)
DB SqlServer2K
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
Public Sub psubDbWriteK(ByVal strSql As String)
Dim odbSysd As New OdbcConnection(gstrSysd)
odbSysd.Open() →ここでコネクションオープン
Dim odbCom As New OdbcCommand(strSql, odbSysd) ←ここで↑のコネクションセット
odbCom.Connection.Open() ←ここでまたコネクションオープンしようとしている
odbCom.ExecuteNonQuery()
odbSysd.Close()
End Sub
なので2度目のコネクションオープンを削除すればいいと思いますよ。
この回答への補足
前述にありますように、コネクションオープンを削除するとシステムエラーが発生します。
はっ!
もしやただのSQLエラーなのでしょうか><
チョット調べてみます。(-_-;)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ソースコード改造 msペイント
-
テキストの折り返し処理について
-
ファイルの開き方
-
正しい五十音順について
-
Bluestacks内でダウンロードし...
-
CASLIIのプログラム(並び替え...
-
CPUが16bitでも32bitOSでコンパ...
-
socketでの複数NICの扱い
-
フローチャートの菱形が狭い。。。
-
VBAでユーザーフォームが自動的...
-
BCDについて
-
障害物回避プログラム
-
Excelで4096点以上のFFTの方法
-
あるプログラムのコマンドライ...
-
整数格子点を列挙するプログラム
-
Windows7 搭載ノートPCにおける...
-
GPIB制御
-
未使用の変数を一括検索する方法
-
OS入ってる機器のソフト・アプ...
-
XnViewにwebpを「いつも開く」...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAで仕様書は書きますか?
-
空elseの有無
-
C言語(gcc), Linux, FTPプログ...
-
メインプログラム、サブプログ...
-
立脚期の識別ができません…
-
パーレー法のプログラムについて
-
プログラミングのコード量に関...
-
BIOSってどんなCPUで処理してる...
-
ノベルゲームを作成中なのですが、
-
VBからシャットダウンさせる方法
-
1~1000,1001~2000の間に素数が...
-
他人が作ったプログラムのメン...
-
例外処理があまり使われない理...
-
C++ソースからUMLの設計書を作...
-
クリップボードを排他的に利用...
-
MFC,C++/CLI,C#の共存
-
テキストの折り返し処理について
-
日曜プログラマならRubyとPytho...
-
SQLデータベースへのアクセスが...
-
変数・オブジェクト名に漢字使用
おすすめ情報