C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[5]: DataGridViewのNullReference


(過去ログ 138 を表示中)

[トピック内 8 記事 (1 - 8 表示)]  << 0 >>

■81120 / inTopicNo.1)  DataGridViewのNullReference
  
□投稿者/ VB初心者 (9回)-(2016/08/30(Tue) 15:39:55)

分類:[.NET 全般] 

VB.NETの質問です。
よろしくお願いします。

class1

Private Sub Display()
    
            Dim BindingSource1 As New BindingSource

            BindingSource1.DataSource = OracleOperat.GetIncetance.Display("SELECT * from D_SQLTEST1") ←←←ここでNULLエラーがでます。

            DataGridView1.DataSource = BindingSource1.DataSource
end Sub

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Display()
    End Sub



class2(OracleOperat)

Imports Oracle.ManagedDataAccess.Client
Imports Oracle.ManagedDataAccess.Types

 Private Shared incetance As OracleOperat
    '接続子
    Private Const pConnectionString As String = "接続省略"
    '接続用
    Protected Shared Property OraConnect As OracleConnection = Nothing

    ' 接続
    Public Shared Function GetIncetance() As OracleOperat

        If OraConnect IsNot Nothing Then

            OraConnect = New OracleConnection()
            OraConnect.Open()

        End If

        Return incetance
    End Function

    ''' <summary>
    ''' データベースを表示する
    ''' </summary>
    ''' <param name="SQL"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Function Display(ByVal SQL As String) As DataTable

        'コマンド設定
        Dim cmd As New OracleCommand
        cmd.CommandText = SQL
        cmd.Connection = OraConnect

        'アダプタ
        Dim oraAdapter As New OracleDataAdapter

        oraAdapter = New OracleDataAdapter(cmd.CommandText, pConnectionString)

        '読み込み
        Dim Table As New DataTable()
        oraAdapter.Fill(Table)

        Return Table

    End Function

        

引用返信 編集キー/
■81122 / inTopicNo.2)  Re[1]: DataGridViewのNullReference
□投稿者/ 魔界の仮面弁士 (851回)-(2016/08/30(Tue) 15:47:06)
No81120 (VB初心者 さん) に返信
>  If OraConnect IsNot Nothing Then
>    OraConnect = New OracleConnection()

「変数が Nothing では無い時に、インスタンスを設定する」のではなく、
「変数が Nothing の時に、インスタンスを設定する」必要があるのでは。
引用返信 編集キー/
■81123 / inTopicNo.3)  Re[2]: DataGridViewのNullReference
□投稿者/ VB初心者 (10回)-(2016/08/30(Tue) 15:54:33)
2016/08/30(Tue) 15:55:03 編集(投稿者)



No81122 (魔界の仮面弁士 さん) に返信
> ■No81120 (VB初心者 さん) に返信
>> If OraConnect IsNot Nothing Then
>>   OraConnect = New OracleConnection()
>
> 「変数が Nothing では無い時に、インスタンスを設定する」のではなく、
> 「変数が Nothing の時に、インスタンスを設定する」必要があるのでは。

ご指摘ありがとうございます。 
is nothingに変更したのですが、同じ箇所で「オブジェクト参照がオブジェクトインスタンスに設定されていません」
とエラーが出ます。
引用返信 編集キー/
■81124 / inTopicNo.4)  Re[2]: DataGridViewのNullReference
□投稿者/ PANG2 (143回)-(2016/08/30(Tue) 15:57:11)
物凄く遠回りして、やっていることは..

Dim oraAdapter As OracleDataAdapter = New OracleDataAdapter(""SELECT * from D_SQLTEST1"", "接続")
Dim Table As New DataTable()
oraAdapter.Fill(Table)
DataGridView1.DataSource = Table
引用返信 編集キー/
■81127 / inTopicNo.5)  Re[3]: DataGridViewのNullReference
□投稿者/ VB初心者 (11回)-(2016/08/30(Tue) 16:09:21)
No81124 (PANG2 さん) に返信
> 物凄く遠回りして、やっていることは..
>
> Dim oraAdapter As OracleDataAdapter = New OracleDataAdapter(""SELECT * from D_SQLTEST1"", "接続")
> Dim Table As New DataTable()
> oraAdapter.Fill(Table)
> DataGridView1.DataSource = Table

どうしてもDBを扱うクラスとフォームクラスを分けたく考えております・・・。
クラス2から戻り値としてTableを引っ張ってきたいのですが、うまくいきません。

引用返信 編集キー/
■81130 / inTopicNo.6)  Re[3]: DataGridViewのNullReference
□投稿者/ VB初心者 (13回)-(2016/08/30(Tue) 16:59:06)
自己レスですいません。解決しました。

シングルトンの使い方間違えておりました。
Private Shared incetance As OracleOperat

Private Shared incetance As New OracleOperat

ODP.NETを使用しており、記述が異なりました。

OraConnect = New OracleConnection()

OraConnect = New OracleConnection("接続子")

ありがとうございました。
引用返信 編集キー/
■81131 / inTopicNo.7)  Re[4]: DataGridViewのNullReference
□投稿者/ VB初心者 (14回)-(2016/08/30(Tue) 16:59:51)
No81130 (VB初心者 さん) に返信
> 自己レスですいません。解決しました。
>
> シングルトンの使い方間違えておりました。
> Private Shared incetance As OracleOperat
> ↓
> Private Shared incetance As New OracleOperat
>
> ODP.NETを使用しており、記述が異なりました。
>
> OraConnect = New OracleConnection()
> ↓
> OraConnect = New OracleConnection("接続子")
>
> ありがとうございました。
解決済み
引用返信 編集キー/
■81155 / inTopicNo.8)  Re[5]: DataGridViewのNullReference
□投稿者/ なちゃ (142回)-(2016/08/31(Wed) 10:15:52)
No81131 (VB初心者 さん) に返信
> ■No81130 (VB初心者 さん) に返信
>>自己レスですいません。解決しました。
>>
>>シングルトンの使い方間違えておりました。
>>Private Shared incetance As OracleOperat
>>↓
>>Private Shared incetance As New OracleOperat
>>
>>ODP.NETを使用しており、記述が異なりました。
>>
>>OraConnect = New OracleConnection()
>>↓
>>OraConnect = New OracleConnection("接続子")
>>
>>ありがとうございました。

んー、何でもシングルトンにすればいいと言うものではないような…
特にDB接続なんてその場でインスタンス作って返して、使用後はCloseでいいような。
※念のためですがASP.NETとかのサーバーアプリじゃないですよね?

例えばこの静的コンストラクタで初期化する方法って、もし例外がでたらアプリ終了するしかなくなりますけど大丈夫ですかね?
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -