在VB.NET中连接数据库的问题

时间:2011-03-25 21:13:18

标签: vb.net

Dim con As New System.Data.SqlClient.SqlConnection
    con.ConnectionString = "Server=iraq\\sqlexpress ; Database=stats ; Trusted_Connection=True ;"
    Dim com As New System.Data.SqlClient.SqlCommand
    com.CommandText = "insert into users values('" & TextBox1.Text & "','" & TextBox2.Text & "','" & TextBox3.Text & "')"
    com.Connection = con
    con.Open()
    com.ExecuteNonQuery()
    con.Close ()

调整连接字符串时会发生新事件

con.ConnectionString = "Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Documents and Settings\Administrator\My Documents\Visual Studio 2005\WebSites\WebSite2\App_Data\stats.mdf;Integrated Security=True;User Instance=True"

使用com.ExecuteNonQuery()

显示错误

有什么建议吗?

1 个答案:

答案 0 :(得分:3)

无法与您的连接字符串说话。看起来相当艰巨。除此之外,我看到了一些问题:

一个。这对我来说最明显:您的INSERT语句不正确。试试这个:

INSERT INTO your_table_name (column_name_1, column_name_2, . . .) VALUES (value_1, value_2, . . .)

B中。根据其他人的评论扩展上述内容,并正确地对您的查询进行PARAMETERIZE。此外,使用应用程序设置文件作为连接字符串,而不是将其硬编码到您的应用程序中。最后,使用Using块,用于连接和命令对象 - 这将处理这些的初始化和处理。我从我的一个旧项目中删除了以下内容 - 希望我没有使用任何sytax来适应这个帖子。原始代码针对SQL Server后端中的存储过程运行:

Public Overridable Sub DataINSERT() Implements IAppUser.DataINSERT 'tblAppUser

    Dim CommandText As String = "INSERT INTO tblUser(UserName, PassWord, Enabled) VALUES(@UserName, @PassWord, @Active)"

    'The Connection String can be established in your Project Settings file:
    Using cn As New SqlClient.SqlConnection(My.Settings.MyDataConnectionString)
        Using cmd As New SqlClient.SqlCommand(CommandText, cn)
            cmd.CommandType = CommandType.Text

            'INSERT PARAMETER SET_UP:
            Dim prmUserName As New SqlClient.SqlParameter("@UserName", SqlDbType.VarChar, 50)
            prmUserName.Direction = ParameterDirection.Input
            prmUserName.Value = _UserName
            cmd.Parameters.Add(prmUserName)

            Dim prmPassWord As New SqlClient.SqlParameter("@PassWord", SqlDbType.VarChar, 50)
            prmPassWord.Direction = ParameterDirection.Input
            prmPassWord.Value = _PassWord
            cmd.Parameters.Add(prmPassWord)

            Dim prmActive As New SqlClient.SqlParameter("@Active", SqlDbType.Bit, 0)
            prmActive.Direction = ParameterDirection.Input
            prmActive.Value = _Active
            cmd.Parameters.Add(prmActive)

            Try
                cn.Open()
                cmd.ExecuteNonQuery()
            Catch ex As Exception
                Dim str As String = Me.ToString & ": " & ex.Message & " / " & ex.TargetSite.ToString
                MsgBox(str)
            End Try

        End Using
    End Using

End Sub 'DataINSERT tblAppUser

我最后的评论是检查SQL Server的存储过程。如果任何一个没有意义,请告诉我。