我一直在vb.net中得到'连接字符串未正确初始化'错误,我不知道如何修复它。我也在尝试自动生成数字。例如,在我的表中,一旦我点击添加新的,它应该按顺序生成下一个数字。
这是我的代码:
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
答案 0 :(得分:2)
Dim conn As New OleDbConnection
Dim connectionstring = ("Data Source=wal1sql1;Initial Catalog=ValueTracker;Integrated Security=True")
conn.Open()
应该是:
Dim connectionstring = ("Data Source=wal1sql1;Initial Catalog=ValueTracker;Integrated Security=True")
Dim conn As New OleDbConnection(connectionstring)
conn.Open()
答案 1 :(得分:0)
缺少初始化的明显错误的一部分,您应该决定是否需要OleDbConnection或SqlConnection,
使用的语法对于SqlConnection而言不适用于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
一旦打开,连接应该使用在同一命名空间中创建的对象(特别是在本例中为System.Data.SqlClient)SqlCommand,SqlDataReader等....你不能自由地混合OleDb和SqlClient。
sql查询也有点奇怪。你希望用这种语法实现什么目标?
修改强>
在下面的评论作出回应。初始化是每个类提供的过程,用于创建类的“实时”实例。在此过程中,调用代码可以传递零个或多个参数,这些参数将由类代码在内部使用,以提供初始工作状态
在类SqlConnection的特定情况下,使用语法 instancename = new classname(parameters)初始化一个调用特殊“构造函数”方法的“实时”实例,其中parameters是一个名为connectionstring的字符串,包含所有信息需要查找服务器和包含数据的数据库。初始化后,您可以开始调用类提供的方法,如Open,Close等...