【发布时间】:2020-09-16 13:07:22
【问题描述】:
我尝试运行一小段代码,我首先检查该值是否存在,如果不存在则更新我的数据库。我的问题是我可以运行一个查询或另一个但不能同时运行,因为它表明数据库已打开且无法访问。我确定我可以写入数据库。它不受读保护,位于我无法访问的位置等。如果我只是尝试更新而不检查,则例程运行。检查肯定没有记录。我已经尝试使用完全不同的变量进行连接的单独例程。我很难过。我尝试过关闭、使用、处置,但我需要比我聪明得多的人来告诉我我做错了什么......
For Each strfile As String In flist
Dim pth As String = Path.GetDirectoryName(strfile)
Dim objReader As New System.IO.StreamReader(strfile)
Dim dVal As String = String.Empty
TextLine = objReader.ReadLine()
SplitLine = Split(TextLine, ",")
dVal = SplitLine(1)
Using Dcon As New OleDbConnection
Dcon.ConnectionString = dbProvider
Dcon.Open()
Dim q1 As String = "SELECT Shares.[_Date] FROM Shares WHERE (((Shares.[_Date])=" & dVal & "))"
Dim comd As OleDbCommand = New OleDbCommand(q1, Dcon)
comd.ExecuteReader()
Dim q2 As String = "INSERT INTO Shares (Code, _Date, _Open, _High, _Low, _Close, _Volume) " &
"SELECT F1, F2, F3, F4, F5, F6, F7 FROM [Text;HDR=NO;DATABASE=" & pth & "].[" & Path.GetFileName(strfile) & "];"
Dim cmd As OleDbCommand = New OleDbCommand(q2, Dcon)
cmd.ExecuteNonQuery()
Dcon.Close()
End Using
Next
我尝试过单独的例程,我尝试过打开、关闭然后重新打开。我尝试了一种连接,我尝试了两种。有谁知道我做错了什么,为什么它一直告诉我数据库是专门打开的,为什么它不让我写信?
提前感谢那些提供帮助的人。
【问题讨论】:
-
你真的应该为事物使用更好的名字。使用
comd和cmd区分两个命令对象是一种很好的混淆方式。描述性名称怎么样,例如selectCommand和insertCommand?