![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
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を探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAで仕様書は書きますか?
-
SQLデータベースへのアクセスが...
-
ノベルゲームを作成中なのですが、
-
空elseの有無
-
あるプログラムのコマンドライ...
-
65536は2の何乗なのでしょうか?
-
Excelで4096点以上のFFTの方法
-
バッチファイルでUSB挿入時に実行
-
自動クエリとはどういうもので...
-
正しい五十音順について
-
Javascrptの0の掛け算
-
バッチファイルでウインドウを...
-
フローチャートの菱形が狭い。。。
-
VBAにてメール作成した際、一部...
-
0除算して、落ちるプログラムと...
-
Visual C++でdebugとreleaseで...
-
WORD印刷できるがEXCE...
-
Bluestacks内でダウンロードし...
-
iTunesがノートンにブロックさ...
-
BIOS.binをバイナリエディタで...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAで仕様書は書きますか?
-
空elseの有無
-
プログラミングのコード量に関...
-
C言語(gcc), Linux, FTPプログ...
-
きれいなコード vba vbaを勉強...
-
Javaプログラムをリバースエン...
-
GUIプログラミングはガワを作っ...
-
他人が作ったプログラムのメン...
-
「ルーチン」という言葉の意味
-
他人の作ったソースの見方(どこ...
-
ソースコード改造 msペイント
-
クリップボードを排他的に利用...
-
ノベルゲームを作成中なのですが、
-
1~1000,1001~2000の間に素数が...
-
GDLでH8/3052Fのi2cプログラム...
-
FILEとfstreamどちらを使う方が...
-
(各種言語)自作関数化の基準...
-
ホワイトボックステスト と ブ...
-
変数・オブジェクト名に漢字使用
-
プログラム動作時のCPU処理時間...
おすすめ情報