我似乎无法将数据插入我的数据库

时间:2016-03-01 13:21:51

标签: sql-server vb.net

当我尝试将数据插入我的数据库时,我的代码出现问题,它检查匹配用户名的部分会不断弹出错误以选择其他用户名。我不知道我做错了什么,任何帮助将不胜感激。

这是我的代码:

'Connecting to SQL Database and executing Query
Dim Strconn As String = "Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\phermacy.mdf;Integrated Security=True;User Instance=True"

Dim Strcmd As String = "INSERT INTO tblstaff_info(id,fname,lname,sex,nationality,status,dob,age,nationality,state,address,phone,email,dateemp,username,password) VALUES ('" & txtregid.Text & "','" & txtfname.Text & "','" & txtlname.Text & "','" & cmbstaffsex.Text & "','" & cmbstatus.Text & "','" & dtpickerdob.Text & "','" & txtage.Text & "','" & txtnationality.Text & "','" & txtstateofo.Text & "','" & rtbaddress.Text & "','" & txtphone.Text & "','" & txtemail.Text & "','" & dtpdateemp.Text & "','" & txtusername.Text & "','" & txtpassword.Text & "');"

Dim da As New SqlDataAdapter
Dim ds As New DataSet
Dim sqlcmd As SqlCommand
sqlconn = New SqlConnection(Strconn)

Try
        sqlconn.Open()
Catch ex As Exception
        MsgBox("Could not connect to DataBase. Application will close now!", vbCritical, "Database Error")
        End
End Try

sqlcmd = New SqlCommand(Strcmd, sqlconn)
da.SelectCommand = sqlcmd

sqlcmd.Dispose()
sqlconn.Close()

'Exception Handling-----------------------
Dim exc As Exception = Nothing

Try
        da.Fill(ds)
Catch ex As Exception
        exc = ex
Finally
        If Not (exc) Is Nothing Then
            MsgBox("User Name Already Exist. Please select a different User Name!", vbExclamation, "Already Exist")
            txtusername.Focus()
        Else
            MsgBox("Save info Successful.", vbInformation, "Successful")
            'Me.Close()
            'loginform.Show()
        End If
End Try

1 个答案:

答案 0 :(得分:0)

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

如果你想坚持使用这种方法,那么尝试在连接的.Close()调用上设置断点 - 然后使用SQL Server Mgmt Studio Express检查.mdf文件 - I&# 39;几乎可以肯定你的数据存在。

我认为真正的解决方案将是

  1. 安装SQL Server Express(无论如何你已经完成了)

  2. 安装SQL Server Management Studio Express

  3. SSMS Express 中创建数据库,为其指定一个逻辑名称(例如Pharmacy - 检查您的拼写!)

  4. 使用其逻辑数据库名称(在服务器上创建时给定)连接到它 - 并且不要乱用物理数据库文件和用户实例。在这种情况下,您的连接字符串将类似于:

    Data Source=.\\SQLEXPRESS;Database=Pharmacy;Integrated Security=True
    

    其他所有内容都完全与以前相同......

  5. 另请参阅Aaron Bertrand的优秀博客文章Bad habits to kick: using AttachDbFileName以获取更多背景信息。