我从网页下载了自动收报机的交易记录(股票代码,时间,交易量,收盘价)。由于每个页面只显示20个事务,我确定总页数没有,然后循环获取所有记录。
由于我在网页上找不到该ID的唯一ID,甚至同一时间的同一个自动收报机,也可能发生相同的数量和相同的价格。 最初我将一条记录更新到mySQL数据库,但是,问题可能会出现。如果两者之间存在错误,请说出150条记录中的第30条。删除之前的记录并重新进行重做或其他任何操作都很麻烦。我想要的是所有 150条记录都可以成功地插入到表或NONE 中,如果有任何错误会提示我修复它。请帮忙。
如果是这样,我会将所有从所有Pages中的记录中获取的值存储到一个数组中,比如arrValue(iNoOfRecords,Value)< - 可能会出现另一个问题,如果是这样,我担心数据类型会是丢失在我的阵列中。然后插入数据库mySQL。由于有150条记录,重复以下说150次。
cmd.Parameters.AddWithValue("@Ticker", Ticker)
cmd.Parameters.AddWithValue("@Price", Price)
cmd.Parameters.AddWithValue("@Volume", Volume)
cmd.Parameters.AddWithValue("@MyTime", MyTime)
以上x 150集
或者我可以在添加所有参数的所有页面中的所有记录的末尾执行“cmd.ExecuteNonQuery()”。即插入所有参数后将运行以下代码。
Try
cnn.Open()
cmd.ExecuteNonQuery()
Catch ex As Exception
MsgBox(ex.ToString)
End Try
mySql,Engine:InnoDB中的字段的数据类型,表:Blocktrade {Ticker,string},{Price,decimal(10,3)},{Volume,BIGINT} (我不知道如何在vb.net中的数组中指定它)
以下是目前使用的VB.Net部分:
Using cmd As New MySqlCommand("INSERT INTO Blocktrade (Ticker,Price, Volume, MyTime) VALUES (@Ticker,@Price,@MyTime)", cnn)
cmd.Parameters.AddWithValue("@Ticker", Ticker)
cmd.Parameters.AddWithValue("@Price", Price)
cmd.Parameters.AddWithValue("@Volume", Volume)
cmd.Parameters.AddWithValue("@MyTime", MyTime)
Try
cnn.Open()
cmd.ExecuteNonQuery()
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End Using
这只是我'愚蠢'的想法',我不知道VB.Net和mySQL是否可以实现。请帮忙。感谢
答案 0 :(得分:1)
如果在所有插入操作完成之前出现问题,您可以尝试使用SqlTransaction
来回滚更改,例如(改编自MSDN: BeginTransaction()
):
Using connection As New SqlConnection(connectionString)
connection.Open()
Dim command As SqlCommand = connection.CreateCommand()
Dim transaction As SqlTransaction
' Start a insert transaction'
transaction = connection.BeginTransaction("InsertTransaction")
' Must assign both transaction object and connection'
' to Command object for a pending insert transaction.'
command.Connection = connection
command.Transaction = transaction
Try
'Prepare command and do all Insert operations here'
' Attempt to commit the transaction.'
transaction.Commit()
Console.WriteLine("Also records are inserted to database.")
Catch ex As Exception
Console.WriteLine("Commit Exception Type: {0}", ex.GetType())
Console.WriteLine(" Message: {0}", ex.Message)
' Attempt to roll back the transaction. '
Try
transaction.Rollback()
Catch ex2 As Exception
' This catch block will handle any errors that may have occurred '
' on the server that would cause the rollback to fail, such as '
' a closed connection.'
Console.WriteLine("Rollback Exception Type: {0}", ex2.GetType())
Console.WriteLine(" Message: {0}", ex2.Message)
End Try
End Try
End Using