ConnectionString属性尚未初始化。VB.NET出现错误
我试图用access中的数据填充datagrid,但每次运行此程序时,我都会收到一个错误,表示ConnectionString属性尚未初始化,我已尝试了我所知道的一切。有人能帮忙吗ConnectionString属性尚未初始化。VB.NET出现错误,vb.net,runtime-error,connection-string,Vb.net,Runtime Error,Connection String,我试图用access中的数据填充datagrid,但每次运行此程序时,我都会收到一个错误,表示ConnectionString属性尚未初始化,我已尝试了我所知道的一切。有人能帮忙吗 Private Sub RefreshData() cnn = New OleDb.OleDbConnection cnn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\My_db.
Private Sub RefreshData()
cnn = New OleDb.OleDbConnection
cnn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\My_db.accdb"
If Not cnn.State = ConnectionState.Open Then
' open connection '
cnn.Open()
End If
Dim da As New OleDb.OleDbDataAdapter()
Dim dt As New DataTable
'fill datatable'
da.Fill(dt)
Me.DataGridView1.DataSource = dt
' close connection'
cnn.Close()
End Sub
Private Sub BindGrid()
If Not cnn.State = ConnectionState.Open Then
' open connection '
cnn.Open()
End If
Dim cmd As New OleDb.OleDbCommand
cmd.Connection = cnn
cmd.CommandText = "SELECT * FROM Training log WHERE Runner Name='" & Profile.UsernameTextBox.Text & "'"
cmd.ExecuteNonQuery()
Me.RefreshData()
cnn.Close()
End Sub
看起来OleDbCommand从未设置为使用OleDbConnection对象,DataAdapter从未设置为使用该命令。试试这个,它还修复了其他几个不符合普遍接受的做法的项目: '将此模块放在单独的文件中 '直接与DB对话的任何和*ALL*代码都应该放在这个模块中,并使用下面RefreshData方法的样式。 公共模块数据层 私有属性ConnectionString作为字符串 收到 返回提供程序=Microsoft.ACE.OLEDB.12.0;数据源=|数据目录|\My_db.accdb 结束 端属性 “我留下了这个名字,这样你就可以把它和你的原始代码匹配起来, “但更好的名字应该是TrainingLogByRunner之类的名字 公共函数RefreshDataByVal RunnerName作为字符串作为DataTable Dim dt作为新数据表 使用cnn作为新的OleDb.OleDb连接字符串_ cmd作为新的OleDb.OLEDBCommand从[Training log]中选择*,其中[Runner Name]=?,cnn_ da作为新的OleDb.OleDb数据适配器CMD “**决不**使用字符串缩聚将此类值替换为查询! '必须在此处猜测列类型/长度 cmd.Parameters.Add?,OleDbType.VarWChar,40.Value=RunnerName '无需为连接呼叫Open。。。 'DataAdapter.Fill方法将管理打开/关闭连接 菲尔特夫人 终端使用 返回dt 端函数 端模块 私有子网 Me.DataGridView1.DataSource=DataLayer.RefreshDataProfile.UsernameTextBox.Text 端接头
能否尝试添加cnn.ConnectionString=Provider=Microsoft.ACE.OLEDB.12.0;数据源=| DataDirectory |\My_db.accdb to function BindGrid?这里的sql注入漏洞让我很难过: