- hiro
- 会議室デビュー日: 2003/11/04
- 投稿数: 13
|
投稿日時: 2004-01-27 13:37
こんにちわ。またまたお世話になります。
只今、.net2002 +access2000を使用(後々Sqlサーバに乗変え)していますが、
SQLの「create table」でaccess2000上にテーブルを作成したいのですが、
下記コードだとテーブルが作成されないです。
しかも例外も発生しておらずどこに原因があるのかつかめない状態です。
どなたか、些細な情報でも良いのでご教授お願いします。
コード: |
|
'抜粋
class A
'//
Protected Overridable sub UsefullSQL()
'// Connectionオブジェクト
Dim connection As IDbConnection = Nothing
'// Commandオブジェクト
Dim Command As IDbCommand = Nothing
Try
'// データベースに接続します。
connection = dbFactory.CreateConn("接続文字列")
connection.Open()
'// データテーブル作成&インデックス作成SQL文を実行します。
Command = dbFactory.CreateCommand( _
"CREATE TABLE test01 (ID char (5))", connection)
Catch exception As Exception
Throw exception
Finally
If ((connection Is Nothing = False) And _
(connection.State = ConnectionState.Open)) Then
connection.Close()
End If
End Try
End Function
end class
class dbFactory
※dbFactoryクラスには
Public Function CreateConn(ByVal connString _
As String) As System.Data.IDbConnection
Dim connection As IDbConnection = New OleDbConnection(connString)
Return connection
End Function
Public Function CreateCommand(ByVal Strcommand As String, _
ByVal Iconn As System.Data.IDbConnection) As System.Data.IDbCommand
Dim command As IDbCommand = New OleDbCommand(Strcommand, Iconn)
Return command
End Function
を実装しています。
end class
|
例外も発生しないのですが、テーブルも作成されないのです。
どなたかご教授お願いいたします。
長くなりましたが、よろしくお願いします。
|
- Jitta
- ぬし
- 会議室デビュー日: 2002/07/05
- 投稿数: 6267
- お住まい・勤務地: 兵庫県・海手
|
投稿日時: 2004-01-27 13:55
引用: |
|
hiroさんの書き込み (2004-01-27 13:37) より:
コード: |
|
'抜粋
class A
'//
Protected Overridable sub UsefullSQL()
'// Connectionオブジェクト
Dim connection As IDbConnection = Nothing
'// Commandオブジェクト
Dim Command As IDbCommand = Nothing
Try
'// データベースに接続します。
connection = dbFactory.CreateConn("接続文字列")
connection.Open()
'// データテーブル作成&インデックス作成SQL文を実行します。
Command = dbFactory.CreateCommand( _
"CREATE TABLE test01 (ID char (5))", connection)
Catch exception As Exception
Throw exception
Finally
If ((connection Is Nothing = False) And _
(connection.State = ConnectionState.Open)) Then
connection.Close()
End If
End Try
End Function
end class
|
|
CreateCommandで、commandは作っていますが、Executeはしていませんよね?実行していないのだから、例外も発生しないし、テーブルもできません。
っつうか、C#とVB.NETが混ざっているような気がするのは私だけ?
|
- hiro
- 会議室デビュー日: 2003/11/04
- 投稿数: 13
|
投稿日時: 2004-01-27 14:07
Jittaさん早速の回答ありがとうございます。
ご指摘のとおりでした。。単純なタイプミス、、はずかしい
このスレッドを消したいくらいです。。
きちんと何度も見直すべきですねえ。。
executeコマンドを発行したら正常に作成されました。
本当に有難うございました。
コード: |
|
っつうか、C#とVB.NETが混ざっているような気がするのは私だけ?
|
そうなんですか?? これでVB.NETで実行してるのですが、、
どこいらへんか指摘していただけると助かります^^;
#確かに.NETをやり始めはc#を使ってたんです。。
#気づかずに同じようなコードを書いていたのかも。。。
|
- よねKEN
- ぬし
- 会議室デビュー日: 2003/08/23
- 投稿数: 472
|
投稿日時: 2004-01-27 14:48
引用: |
|
コード: |
|
If ((connection Is Nothing = False) And _
(connection.State = ConnectionState.Open)) Then
|
|
本題とは関係ないですが、このIf文の記述では、
connectionがNothingのときにまずいですよ。
VBのAnd演算子はC#の&&演算子とは違って短絡評価ではなく、
And演算子で繋がれたすべての条件式を判定するので、connectionがNothingのとき、
「connecton.State」の個所で例外が発生します。
And演算子の代わりにAndAlso演算子を使えば、C#の&&の場合と同じです。
|
- Jitta
- ぬし
- 会議室デビュー日: 2002/07/05
- 投稿数: 6267
- お住まい・勤務地: 兵庫県・海手
|
投稿日時: 2004-01-27 15:01
引用: |
|
hiroさんの書き込み (2004-01-27 14:07) より:
コード: |
|
っつうか、C#とVB.NETが混ざっているような気がするのは私だけ?
|
そうなんですか?? これでVB.NETで実行してるのですが、、
どこいらへんか指摘していただけると助かります^^;
|
気のせいでした、すみません。んと、「If (」とか「'//」を、勘違いしていました。失礼しました
|