【问题标题】:Save user inputs to database table asp.net将用户输入保存到数据库表 asp.net
【发布时间】:2017-05-21 17:59:57
【问题描述】:

我正在开展一个学校项目,我们应该将用户输入的数据保存到我们在项目中创建的数据库中。我在项目的 App_Data 文件夹中创建了一个名为“db1”的数据库,并与它一起创建了一个名为“Video_Games”的表。我的代码有点像弗兰肯斯坦的怪物,它来自我教科书的示例以及在线示例。

Protected Sub btnTable_Click(sender As Object, e As EventArgs) Handles btnTable.Click
    Dim strTitle As String = txtTitle.Text
    Dim strConsole As String = txtConsole.Text
    Dim strYear As String = txtYear.Text
    Dim strESRB As String = txtRating.Text
    Dim strScore As String = txtScore.Text
    Dim strPublisher As String = txtPublisher.Text
    Dim strDeveloper As String = txtDeveloper.Text
    Dim strGenre As String = txtGenre.Text
    Dim strPurchase As String = calDate.SelectedDate.ToString

    Dim conn As SqlConnection
    Dim cmd As SqlCommand

    Dim cmdString As String = "INSERT INTO Video_Games(Title, Console, Year, ESRB, Score, Publisher, Developer, Genre, Purchase) 
                                VALUES (@strTitle, @strConsole, @strYear, @strESRB, @strScore, @strPublisher, @strDeveloper, @strGenre, @strPurchase)"


    conn = New SqlConnection("Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\db1;Integrated Security=True;User Instance=True")
    cmd = New SqlCommand(cmdString, conn)

    cmd.Parameters.AddWithValue("@strTitle", strTitle)
    cmd.Parameters.AddWithValue("@strConsole", strConsole)
    cmd.Parameters.AddWithValue("@strYear", strYear)
    cmd.Parameters.AddWithValue("@strESRB", strESRB)
    cmd.Parameters.AddWithValue("@strScore", strScore)
    cmd.Parameters.AddWithValue("@strPublisher", strPublisher)
    cmd.Parameters.AddWithValue("@strDeveloper", strDeveloper)
    cmd.Parameters.AddWithValue("@strGenre", strGenre)
    cmd.Parameters.AddWithValue("@strPurchase", strPurchase)

    conn.Open()

    cmd.ExecuteNonQuery()

    conn.Close()

End Sub

我得到的错误来自“conn.Open()”行: System.Data.dll 中出现“System.Data.SqlClient.SqlException”类型的异常,但未在用户代码中处理

其他信息:在建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL

从错误来看,我假设它与我的“conn = New SqlConnection”行有关,但我找不到如何使它工作。感谢您提供的任何帮助。

【问题讨论】:

  • 您的计算机上是否有一个名为“SQLEXPRESS”的 SQL Server Express 实例?如果您刚刚从某个地方复制了一个连接字符串,那么它可能对您的情况无效。
  • 这是来自我的教科书示例;它没有对此给出太多解释,所以我不确定如何正确使用它。
  • 创建数据库时是如何连接的?您可以尝试使用与最新版本的 Visual Studio 一起安装的 LocalDB。也许像conn = New SqlConnection("Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\db1;Integrated Security=True;") 这样的东西会起作用(取决于您在 PC 上安装/配置的内容)。
  • 我只是右键单击 App_Data 文件夹,转到添加,然后是 SQL Server 数据库。这就是我在网上找到的关于如何将数据库添加到项目中的内容。我尝试了 LocalDB 行,但它仍然不想工作。

标签: sql asp.net database vb.net


【解决方案1】:

我想通了,实际上走的是完全不同的方向;我去了 Access 数据库溃败而不是 SQL。感谢大家的帮助和支持。我使用的代码是:

Protected Sub btnDisplay_Click(ByVal sender As Object, ByVal e As System.EventArgs)

    Dim strTitle As String = txtTitle.Text
    Dim strConsole As String = txtConsole.Text
    Dim strYear As String = txtYear.Text
    Dim strESRB As String = txtRating.Text
    Dim strScore As String = txtScore.Text
    Dim strPublisher As String = txtPublisher.Text
    Dim strDeveloper As String = txtDeveloper.Text
    Dim strGenre As String = txtGenre.Text
    Dim strPurchase As String = calDate.SelectedDate.ToString
    Dim strDate As Date = calDate.SelectedDate
    Dim intYear As Integer = CInt(strYear)

    If strDate > Date.Today Then
            Response.Write("<script>alert('Error: The selected date must be today or earlier')</script>")
        Else
        lblDisp2.Text = "Data Saved to Database"

        Dim connection As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\db1.accdb"
        Dim query As String = "INSERT INTO [Video_Games](Title, Console, Year_Released, ESRB, Score, Publisher, Developer, Genre, Purchase) 
                                VALUES (@strTitle, @strConsole, @strYear, @strESRB, @strScore, @strPublisher, @strDeveloper, @strGenre, @strPurchase)"

        Dim con As New OleDbConnection(connection)
        Dim cmd As New OleDbCommand()
        cmd.CommandText = query
        cmd.CommandType = CommandType.Text
        cmd.Connection = con

        cmd.Parameters.AddWithValue("@strTitle", strTitle)
        cmd.Parameters.AddWithValue("@strConsole", strConsole)
        cmd.Parameters.AddWithValue("@strYear", strYear)
        cmd.Parameters.AddWithValue("@strESRB", strESRB)
        cmd.Parameters.AddWithValue("@strScore", strScore)
        cmd.Parameters.AddWithValue("@strPublisher", strPublisher)
        cmd.Parameters.AddWithValue("@strDeveloper", strDeveloper)
        cmd.Parameters.AddWithValue("@strGenre", strGenre)
        cmd.Parameters.AddWithValue("@strPurchase", strPurchase)

        con.Open()
        Dim dr As OleDbDataReader = cmd.ExecuteReader()
        Dim dt As New DataTable()
        dt.Load(dr)
        con.Close()
    End If

End Sub

【讨论】:

    【解决方案2】:

    https://www.connectionstrings.com 获取它的连接字符串。 您可以使用受信任的连接或标准安全性。你在安装mssql的时候定义了用户登录混合模式还是正常的。混合模式意味着使用用户名和密码

    【讨论】:

      猜你喜欢
      • 2015-04-25
      • 1970-01-01
      • 2021-01-29
      • 2014-08-20
      • 2014-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多