【问题标题】:Application Page Inserting data into local SQL Server database in Visual Studio应用程序页面在 Visual Studio 中将数据插入本地 SQL Server 数据库
【发布时间】:2016-10-16 23:32:28
【问题描述】:

我一直在尝试在 Visual Studio 中创建一个注册页面,但我似乎无法让它工作。

  • 数据库名称 = 用户
  • 要插入数据的列 = 用户名和密码

当我执行代码时,它返回消息“数据已保存”,这让我相信它已经工作了,但是当我查看表数据时,什么都没有改变..

Public Class SignUp
Dim mysqlConn As Data.SqlClient.SqlConnection
Dim command As Data.SqlClient.SqlCommand

Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
    mysqlConn = New Data.SqlClient.SqlConnection
    mysqlConn.ConnectionString = ("Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\NewFolder1\Members.mdf;Integrated Security=True")
    Dim RowsAffected As Integer
    Try
        mysqlConn.Open()
        Dim query As String = "INSERT INTO [User] (username, password) VALUES (@Username, @Password)"
        command = New SqlClient.SqlCommand(query, mysqlConn)
        Dim paramUsername As New SqlClient.SqlParameter() With {.ParameterName = "@Username", .Value = TextBox1.Text, .Size = 50, .SqlDbType = SqlDbType.VarChar}
        Dim paramPassword As New SqlClient.SqlParameter() With {.ParameterName = "@Password", .Value = TextBox2.Text, .Size = 50, .SqlDbType = SqlDbType.VarChar}

        command.Parameters.Add(paramUsername)
        command.Parameters.Add(paramPassword)

        RowsAffected = command.ExecuteNonQuery

        mysqlConn.Close()

        If 0 < RowsAffected 
           Then MessageBox.Show("Data Saved")
    Catch ex As Exception
        MessageBox.Show(ex.Message)
    Finally
        mysqlConn.Dispose() 'closes connection  
    End Try 

【问题讨论】:

  • 可能是 Why saving changes to a database fails? 的骗子,但您永远不会将密码存储为纯文本
  • 这不是一个公开的表格,永远不会,所以我不想散列密码,至少还没有:)
  • 如果显示该消息,则保存数据,因为数据库中至少有一行受到影响。你只是在错误的地方或错误的时间寻找数据。 @Plutonix 提供的链接无疑与情况有关。简而言之,您的两个数据库和一个包含您的更改的数据库在您每次构建时都会被覆盖。要么您正在查看不包含您的更改的那个,要么您正在查看一个包含但在它被覆盖之后的那个。

标签: sql-server vb.net


【解决方案1】:

整个 User Instance 和 AttachDbFileName= 方法是有缺陷的 - 充其量!在 Visual Studio 中运行您的应用程序时,它将复制 .mdf 文件(从您的 App_Data 目录到输出目录 - 通常是 .\bin\debug - 您的应用程序运行的位置)并且很可能 ,您的 INSERT 工作正常 - 但您最终只是查看了错误的 .mdf 文件

如果您想坚持这种方法,请尝试在 mySqlConn.Close() 调用上设置断点 - 然后使用 SQL Server Mgmt Studio Express 检查 .mdf 文件 - 我几乎可以肯定您的数据在那里。

【讨论】:

    猜你喜欢
    • 2020-09-28
    • 2018-07-31
    • 1970-01-01
    • 2022-06-11
    • 1970-01-01
    • 1970-01-01
    • 2015-01-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多