2011-04-19 49 views
2

我想检查一行是否插入到我的数据库中。即使它插入时它也会抛出一个错误(这是一个数据库问题,当我得到更新版本的Microsoft Access时会稍后解决),所以根据是否存在错误无法检查插入是否成功。我想我需要检查AffectedRows的东西,但我不知道是什么。我一直在寻找如何做到这一点的信息,但我无法弄清楚如何使它适用于我的确切情况。这里是我的代码看起来像一个总体思路:检查行是否被插入

Protected Sub Wizard1_FinishButtonClick(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.WizardNavigationEventArgs) Handles Wizard1.FinishButtonClick 

'code for collecting data... 

'Define Connection 
    Dim myConn As New OleDbConnection 
    myConn.ConnectionString = AccessDataSource1.ConnectionString 
    myConn.Open() 

    'Insert command 
    Dim myIns1 As New OleDbCommand("INSERT INTO tableCourse 'long insert command here... 

'Execute command and handle errors 
    Try 
     myIns1.ExecuteNonQuery() 
    Catch myException5 As Exception 
    End Try 

    'Close connection 
    myConn.Close() 

-UPDATE-

我想它是这样的:

'Execute command, handle errors, and check if row was inserted 
    Dim numInserted As Integer = 0 
    Try 
     numInserted = myIns1.ExecuteNonQuery() 
    Catch myException As Exception 
    Finally 
     If numInserted = 0 Then 
      Label1.Text = "Sorry, an error occured." 
     Else 
      Label1.Text = "Thank you! Your new course approval request has been submitted." 
     End If 
    End Try 

但numInserted每一次即使出山为0插入成功。这可能与myIns1.ExecuteNonQuery()即使插入成功但会引发错误有关。

-EDIT-我发现“重复值”错误是因为它以某种方式尝试插入记录两次。我不知道它为什么这样做。

+0

我使用的Access 2003由于某些原因抛出一个有关重复值的古怪错误,我环顾四周,试图弄清楚发生了什么以及我能找到的所有信息都说它只是一个奇怪的怪癖(在直接在Access中工作时有一些修复),它在2007年也存在,但不是2010年。所以我打算尽快将我的数据库更新到Access 2010。 – Sara 2011-04-19 01:05:37

+0

“出于某种原因,Access 2003出现了有关重复值的奇怪错误”, - 重复行是重复的行。你确定这是一个错误?你有没有尝试压缩和修复你的数据库? – 2011-04-19 01:55:08

+0

还没有尝试过对它做任何事情;我可能应该。这很奇怪,因为它说每次插入时都有重复的行,即使没有。尽管我不是Access的专家,但我知道的是我在网上找到的。 – Sara 2011-04-19 04:16:14

回答

0

ExecuteNonQuery函数返回的行受影响的数量...

Dim numInserted as Integer = myIns1.ExecuteNonQuery() 
If numInserted = 0 Then 
    ' no rows were inserted...throw exception? 
End If 
+0

似乎应该可以工作,但它每次都会以0出现。 – Sara 2011-04-20 00:02:55

0

你所描述的症状(称为无重复,但刀片扔重复错误)听起来像您的Access数据库需要Compacting and Repairing

您应该定期进行此操作。 (总是先备份)。