如何使用ASP.Net vb .mdf在数据库中插入数据

时间:2015-03-10 13:07:18

标签: asp.net vb.net sql-server-2008

我的应用程序的添加和插入功能不起作用。我不知道我做错了什么。你能找到任何错误吗?请帮忙!

这是我的代码:

Protected Sub btnConfirm_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnConfirm.Click



    Dim connString As String
    connString = "Data Source=.\SQLEXPRESS;AttachDbFilename=E:\\boomwebsite\App_Data\playaazaleaDatabase.mdf;Integrated Security=True;User Instance=True"
    Dim cmd As New SqlCommand

    Dim myConnection As New Data.SqlClient.SqlConnection(connString)
    Try
        myConnection.Open()

        cmd.CommandText = "INSERT INTO reservations(fname, lname, contactnumber, amenities, date, price, status, statuscount) VALUES (@FNAME, @LNAME, @CONTACT, @AMENITIES, @DATE, @PRICE, @STATUS, @STATUSCOUNT)"
        cmd.Connection = myConnection
        cmd.Parameters.AddWithValue("@FNAME", txtboxFname.Text)
        cmd.Parameters.AddWithValue("@LNAME", txtboxLname.Text)
        cmd.Parameters.AddWithValue("@CONTACT", txtboxContact.Text)
        cmd.Parameters.AddWithValue("@AMENITIES", DropDownListAmenities.SelectedItem.Value)
        cmd.Parameters.AddWithValue("@DATE", txtboxDate.Text)
        cmd.Parameters.AddWithValue("@PRICE", txtboxPrice.Text)
        cmd.Parameters.AddWithValue("@STATUS", txtboxStatus.text)
        cmd.Parameters.AddWithValue("@STATUS2", txtboxStatus2.text)

        cmd.ExecuteNonQuery()
        Response.Redirect("bookedreservations.aspx")

    Catch ex As Exception
        Label1.text = "Error Inserting Data ..."
    Finally
        myConnection.Close()
    End Try
End Sub

1 个答案:

答案 0 :(得分:0)

好吧,有一个异常处理程序写出..“错误插入数据”...没有告诉你什么是错误似乎有点无用,至少写

Catch ex As Exception
    Label1.text = "Error Inserting Data ... " & ex.Message
...

将显示您的查询出了什么问题。

然而,在该查询中存在一个很大的疑问。 Date几乎是任何数据库系统中的保留关键字。如果你想使用它,请用方括号括起来

cmd.CommandText = "INSERT INTO reservations(fname, lname, " & _ 
     "contactnumber, amenities, [date], price, status, statuscount) " & _
     "VALUES (@FNAME, @LNAME, @CONTACT, @AMENITIES, @DATE, " & _ 
     "@PRICE, @STATUS, @STATUSCOUNT)"

另一个可能的问题是方法AddWithValue。这种方法虽然方便,但在使用它时需要充分注意。它创建一个带有数据类型的参数,该数据类型假定查看您传递的值的数据类型。例如,在您的情况下,price字段应该是nvarchar字段,因为您传递了一个字符串的txtboxPrice.Text属性。 最好使用

 cmd.Parameters.Add("@PRICE", SqlDbType.Decimal).Value = Convert.ToDecimal(txtboxPrice.Text)

等等其他参数。