2016-12-09 18 views
0

我任务是制作一个简单的基于GUI的数据库浏览器。该数据库是我们学校的ftp服务器上托管,我们必须使用Visual Basic和大部分我找到了工作,我可以搜索,查看,并添加到数据库中,但编辑现有的记录给我的问题。与vb.net Oracle数据库错误

当我尝试更新记录时,如果不在查询的某部分使用冒号(:)而ora-01008未使用冒号(:)绑定变量,则会出现ora-00904错误无效标识符。我们到目前为止只真正使用的SQLDeveloper并作为最终的项目中,我们被要求使用Visual Basic,但我们从来没有涉及这样的事在课堂上这样的,我想是一个挑战。

PS:我只有注释,这样我可以查看错误的部分。

Private Sub btnSave_Click(sender As Object, e As EventArgs) Handles btnSave.Click 
Dim strCustomerEmail As String = "" 
Dim strLastName As String = "" 
Dim strFirstName As String = "" 
Dim strAddress As String = "" 
Dim strCity As String = "" 
Dim strState As String = "" 
Dim intZip As Integer = 0 
Dim datDateSignedUp As Date 
Dim intCustomerNumber As Integer = 0 


Try 
    strCustomerEmail = CStr(txtCustomerEmail.Text) 
    strLastName = CStr(txtLastName.Text) 
    strFirstName = CStr(txtFirstName.Text) 
    strAddress = CStr(txtAddress.Text) 
    strCity = CStr(txtCity.Text) 
    strState = CStr(txtState.Text) 
    intZip = CInt(txtZip.Text) 
    datDateSignedUp = CDate(txtDateSignedUp.Text) 
    intCustomerNumber = CInt(txtCustomerNumber.Text) 



    Dim sql As String = "UPDATE P_CLIENTS SET CUSTOMER_EMAIL = :CUSTOMER_EMAIL, LASTNAME = :LASTNAME, FIRSTNAME = :FIRSTNAME, ADDRESS = :ADDRESS, CITY = :CITY, STATE = :STATE, ZIP = :ZIP, DATE_SIGNED_UP = :DATE_SIGNED_UP, CUSTOMER# = :CUSTOMER# WHERE CUSTOMER_EMAIL = :EDIT_CUSTOMER_EMAIL" 

    Dim cmd2 As New OracleCommand(sql, conn) 
    conn.Open() 
    cmd2.Parameters.Add("CUSTOMER_EMAIL", strCustomerEmail) 
    cmd2.Parameters.Add("LASTNAME", strLastName) 
    cmd2.Parameters.Add("FIRSTNAME", strFirstName) 
    cmd2.Parameters.Add("ADDRESS", strAddress) 
    cmd2.Parameters.Add("CITY", strCity) 
    cmd2.Parameters.Add("STATE", strState) 
    cmd2.Parameters.Add("ZIP", intZip) 
    cmd2.Parameters.Add("DATE_SIGNED_UP", datDateSignedUp) 
    cmd2.Parameters.Add("EDIT_CUSTOMER_EMAIL", strEditCustomerEmail) 
    cmd2.CommandType = CommandType.Text 
    cmd2.ExecuteNonQuery() 

    txtCustomerEmail.Text = strEditCustomerEmail 
    txtLastName.Text = "" 
    txtFirstName.Text = "" 
    txtAddress.Text = "" 
    txtCity.Text = "" 
    txtState.Text = "" 
    txtZip.Clear() 
    txtDateSignedUp.Clear() 
    txtCustomerNumber.Clear() 
    'txtCustomerEmail.Select() 

    txtCustomerEmail.Enabled = True 
    txtLastName.Enabled = True 
    txtFirstName.Enabled = True 
    txtAddress.Enabled = True 
    txtCity.Enabled = True 
    txtState.Enabled = True 
    txtZip.Enabled = True 
    txtDateSignedUp.Enabled = True 
    txtCustomerNumber.Enabled = True 



    'Catch ex As Exception 
    ' MessageBox.Show("An error occurred while attempting to add a new record.", "Error") 
Finally 
    conn.Close() 
    txtCustomerEmail.Select() 
End Try 
End Sub 
+2

你为什么不加冒号也是在参数名称时,将它们添加到参数集合? – Steve

+1

您是否在参数中缺少客户#? – theduck

+0

圣洁的废话我认为多数民众赞成在....我想念客户#废话让我试试。我一直在为我的课程进行日常项目工作,所以我就这样被烧毁了。 – killj0y

回答

1

您从参数列表中缺少Customer#