- PR -

InsertCommandを複数行でコーディングするには

投稿者投稿内容
LANVIN
大ベテラン
会議室デビュー日: 2007/03/12
投稿数: 211
投稿日時: 2008-03-12 13:45
 初歩的な質問で申し訳ありません。
VB2005のSqlDataAdapterの
InsertCommandを複数行でコーディングするには
どうしたらよいのでしょうか?

& や _ で連結しても
構文エラーになってしまいます。

DA.InsertCommand = New SqlCommand("INSERT INTO TBL (SYA,CD,AATE) _
VALUES (@SYA,@CD,@AATE)", Cn)
とか
DA.InsertCommand = New SqlCommand("INSERT INTO TBL (SYA,CD,AATE)" _
& " VALUES (@SYA,@CD,@AATE)", Cn)

としてみたのですが・・

ご教授頂けないでしょうか?

宜しくお願いします。

あすか
ぬし
会議室デビュー日: 2006/07/12
投稿数: 309
投稿日時: 2008-03-12 14:14
2つ目のが正解のはずです。
コード:
Imports System.Data.SqlClient
Module Module1

    Sub Main()
        Dim DA As New SqlDataAdapter()
        Dim cnn As New SqlConnection()
        DA.InsertCommand = New SqlCommand("INSERT INTO TBL (SYA,CD,AATE)" _
                 & "VALUES (@SYA,@CD,@AATE)", cnn)
    End Sub

End Module


これっぽちの短いコードを組んで確認しましたが構文エラーは出ません。
別のところに原因があるのではないでしょうか。
LANVIN
大ベテラン
会議室デビュー日: 2007/03/12
投稿数: 211
投稿日時: 2008-03-12 14:16
すいません、お聞きしたいことが
間違っていました。
Dim ParaIns1 As SqlParameter = DA.InsertCommand.Parameters.Add("@SYA", SqlDbType.Int)

ParaIns1.SourceColumn = "SYA"

とInsertCommandのパラメータを2行で書いているのですが

何とか1行にならないのでしょうか?

大変申し訳ありません、宜しくお願いします。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2008-03-12 15:07
引用:

LANVINさんの書き込み (2008-03-12 14:16) より:

すいません、お聞きしたいことが
間違っていました。
Dim ParaIns1 As SqlParameter = DA.InsertCommand.Parameters.Add("@SYA", SqlDbType.Int)

ParaIns1.SourceColumn = "SYA"

とInsertCommandのパラメータを2行で書いているのですが

何とか1行にならないのでしょうか?

大変申し訳ありません、宜しくお願いします。


"まずはリファレンス" ではなかったのでしょうか?すでに確認しているのでしたら申し訳ありません。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
LANVIN
大ベテラン
会議室デビュー日: 2007/03/12
投稿数: 211
投稿日時: 2008-03-12 15:54
言葉足らずですいません。

Dim ParaIns1 As SqlParameter = QKARDA.InsertCommand.Parameters.Add("@KAISYA", SqlDbType.Int, 6, "KAISYA")

と1文で書けますが
sizeのパラメータを指定するのが嫌なため2行に別けていたのです。

Dim ParaIns1 As SqlParameter = QKARDA.InsertCommand.Parameters.Add("@KAISYA", SqlDbType.Int,,, "KAISYA")
では構文エラーになります。

やはりどうしようもないのでしょうか?
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2008-03-12 16:53
引用:

LANVINさんの書き込み (2008-03-12 15:54) より:

言葉足らずですいません。

と1文で書けますが
sizeのパラメータを指定するのが嫌なため2行に別けていたのです。


そうでしたか。


[ メッセージ編集済み 編集者: じゃんぬねっと 編集日時 2008-03-12 17:00 ]
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2008-03-12 17:14
引用:

LANVINさんの書き込み (2008-03-12 15:54) より:

やはりどうしようもないのでしょうか?


自分でオーバーロードの代わりを作ってあげればどうしようもないこともないですね。

コード:

    Private Function CreateSqlParameter(ByVal parameterName As String, ByVal dbType As System.Data.SqlDbType, ByVal sourceColumnName As String) As System.Data.SqlClient.SqlParameter
        Dim returnValue As New System.Data.SqlClient.SqlParameter(parameterName, dbType)
        returnValue.SourceColumn = sourceColumnName

        Return returnValue
    End Function


これを利用して、

コード:

    Dim ParaIns1 As System.Data.SqlClient.SqlParameter = QKARDA.InsertCommand.Parameters.Add(CreateSqlParameter("@KAISYA", SqlDbType.Int, "KAISYA"))


とか。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2008-03-12 18:16
必要だから指定しなきゃいけないのにそれをしたくないのは何度も書いているからと思われる
であるならラッパークラスを作って呼び出すようにすれば面倒な書き方をしなければならないのはクラスを書く一回だけになると思われ

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