user2539275
user2539275

Reputation: 1

How do I fix the error 'Connection string has not properly been initialized' in vb.net?

I keep getting 'connection string has not properly been initialized' error in vb.net and I don't know how to fix it. I also am trying to auto-generate numbers. For example, in my table once I hit add new it should generate the next number in order.

Here is my code:

Imports System.Data
Imports System.Data.OleDb   
Imports System.Data.SqlClient



Public Class AddTemplate

    Private Property OleDbConnection As Object

    Private Property temp As Object
        Dim dc As New OleDbConnection
        Dim drd As OleDbDataReader
        Dim conn As SqlConnection
        Dim cmd As SqlCommand
        Dim da As SqlDataAdapter
        Dim ds As DataSet
        Dim i As Integer = 0


    Private Sub TemplateNameTextBox_TextChanged(sender As Object, e As EventArgs)
        Try

        Catch ex As Exception

        End Try
    End Sub


    Private Sub SearchButton_Click(sender As Object, e As EventArgs) Handles SearchButton.Click

    End Sub


    Public Sub Button1_Click(sender As Object, e As EventArgs) Handles SaveButton.Click
        ValueSourcesBindingSource.EndEdit()
        Me.Update()
    End Sub


    Private Sub CancelButton_Click(sender As Object, e As EventArgs) Handles CancelButton.Click
        Me.Close()
    End Sub


    Private Function ValueSourcesDataTable() As Object
        Me.Update()
    End Function


    Private Sub ValueSourcesBindingNavigatorSaveItem_Click(sender As Object, e As EventArgs)HandlesValueSourcesBindingNavigatorSaveItem.Click
        Me.Validate()
        Me.ValueSourcesBindingSource.EndEdit()
        Me.TableAdapterManager.UpdateAll(Me.ValueTrackerDataSet)
    End Sub


    Private Sub AddTemplate_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        'TODO: This line of code loads data into the 'ValueTrackerDataSet.ValueSources' table. You can move, or remove it, as needed.
        Me.ValueSourcesTableAdapter.Fill(Me.ValueTrackerDataSet.ValueSources)
    End Sub


    Private Sub ValueSourcesDataGridView_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles ValueSourcesDataGridView.CellContentClick
    End Sub


    Public Sub AutoNumberNo()
        Dim myReader As SqlDataReader
        conn = GetConnect()
        conn.Open()

        Dim comm As SqlCommand = New SqlCommand(Sql, conn)
        myReader = comm.ExecuteReader
        Try
            If myReader.HasRows Then
                While myReader.Read()
                    temp = myReader.Item("ValueSourceID") + 1
                End While
            Else

            End If
            temp = 1
            End
            myReader.Close()
        Catch ex As Exception

        End Try
        conn.Close()
        ValueSourceIDTextBox.Text = String.Concat(temp) ' result will appear in textbox txtId


        'declare variables
        Dim randomvalue As New Random   'create random object
        Dim randomhold As Integer
        'generate random number
        For i As Integer = 0 To 9999
            randomhold = randomvalue.Next(1, 9999)
            ValueSourceIDTextBoxId.Text = randomhold & " " & DateTime.Now.Minute & "  " & DateTime.Now.Year
        Next
    End Sub


    Private Sub BindingNavigatorMoveNextItem_Click(sender As Object, e As EventArgs) Handles BindingNavigatorMoveNextItem.Click

    End Sub


    Private Sub ValueSourceIDTextBox_TextChanged(sender As Object, e As EventArgs) Handles ValueSourceIDTextBox.TextChanged

    End Sub


    Private Function GetConnect() As Object
        Throw New NotImplementedException
    End Function


    Private Function Sql() As Object
        Throw New NotImplementedException
    End Function


    Private Sub ToolStripButton1_Click(sender As Object, e As EventArgs) Handles ToolStripButton1.Click

    End Sub


    Private Sub ToolStripProgressBar1_Click(sender As Object, e As EventArgs)

    End Sub


    Private Sub BindingNavigatorMovePreviousItem_Click(sender As Object, e As EventArgs) Handles BindingNavigatorMovePreviousItem.Click

    End Sub


    Private Sub BindingNavigatorAddNewItem_Click(sender As Object, e As EventArgs) Handles    BindingNavigatorAddNewItem.Click
        Dim conn As New OleDbConnection
        Dim connectionstring = ("Data Source=wal1sql1;Initial Catalog=ValueTracker;Integrated Security=True")

        conn.Open()


        Dim query As String = "Select IsNULL(Max(0+1), 0) ValueSourceID from ValueSourcesDataTable"
        Dim dr As SqlClient.SqlDataReader

        Dim cmd As New SqlCommand(query, SqlConnection)
        dr = cmd.ExecuteReader
        dr.Read()

        ValueSourcesDataTable.Text = dr("ValueSourceID").ToString
        conn.Close()
    End Sub


    Private Function ValueSourceIDTextBoxId() As Object
        Throw New NotImplementedException
    End Function


    Private Function SqlConnection() As Object
        Throw New NotImplementedException
    End Function

End Class

Upvotes: 0

Views: 1373

Answers (2)

Steve
Steve

Reputation: 216273

A part from the obvious error of the missing initialization, you should decide if you want an OleDbConnection or a SqlConnection,

The syntax used is valid for a SqlConnection not for an OleDbConnection.

 Dim connectionstring = "Data Source=wal1sql1;Initial Catalog=ValueTracker;Integrated Security=True"
 Dim query As String = "Select IsNULL(Max(0+1), 0) ValueSourceID from ValueSourcesDataTable"
 Using conn = New SqlConnection(connectionstring)
 Using cmd = New SqlCommand(query, conn)
     conn.Open()
     Using dr = cmd.ExecuteReader
         dr.Read()
         ValueSourcesDataTable.Text = dr("ValueSourceID").ToString
     End Using
 End Using
 End Using

Once opened the connection should be used from objects created in the same namespace (specifically in this case System.Data.SqlClient) SqlCommand, SqlDataReader etc.... You can't freely mix OleDb and SqlClient.

Also the sql query is bit weird. What do you want to achieve with that syntax?

EDIT
In response at your comment below. The initialization is a process that every class provides to create a 'live' instance of the class. In this process the calling code could pass zero or more parameters that will be used internally by the class code to provide an initial working state.
In the specific case of the class SqlConnection you initialize a 'live' instance calling the special 'constructor' method using the syntax instancename = new classname(parameters) where parameters is a string called connectionstring with all the information required to find the server and the database containing your data. After the initialization you could start to call the methods provided by the class like Open, Close, etc...

Upvotes: 0

Douglas Barbin
Douglas Barbin

Reputation: 3615

Dim conn As New OleDbConnection
Dim connectionstring = ("Data Source=wal1sql1;Initial Catalog=ValueTracker;Integrated Security=True")

conn.Open()

should be:

Dim connectionstring = ("Data Source=wal1sql1;Initial Catalog=ValueTracker;Integrated Security=True")
Dim conn As New OleDbConnection(connectionstring)

conn.Open()

Upvotes: 2

Related Questions