【问题标题】:trying to add data in SQL Server 2005 database in vb.net试图在 vb.net 的 SQL Server 2005 数据库中添加数据
【发布时间】:2010-03-10 13:58:39
【问题描述】:

有人可以在这里帮助我吗,我只是一个想学习使用 vb.net 操作 SQL Server 数据的初学者。我已经体验过在 ms 访问中操作数据。所以我只是回收了我在这里使用的代码。但不幸的是我收到了这个错误:

Object reference not set to an instance of an object.

另一个问题是,我不确定我在 SqlConnection 中输入的内容是否与 SQL Server 中的内容匹配。下面是sql server management studio express的截图:

[http://screencast.com/t/Y2Q0NWRhYTA][1]

Imports system.data.sqlclient

'declarations
 Dim idnum As String
    Dim lname As String
    Dim fname As String
    Dim skul As String

    Dim sqlcon As SqlConnection
    Dim sqlcom As SqlCommand  

idnum = TextBox1.Text
        lname = TextBox2.Text
        fname = TextBox3.Text
        skul = TextBox4.Text

sqlcon.open

            sqlcon = New SqlConnection("Data Source=SENBONZAKURA\SQLEXPRESS;Initial Catalog=testing;User ID=SenbonZakura/Rew;")
            sqlcom = New SqlCommand("select * from [student]", sqlcon)

            Dim strsql As String = "insert into [student]([ID], [LASTNAME], [FIRSTNAME], [SCHOOL]) values('" + idnum + "','" + lname + "','" + fname + "','" + skul + "')"


            sqlcom.ExecuteNonQuery()

【问题讨论】:

    标签: sql-server vb.net ado.net


    【解决方案1】:

    你来电:

    sqlcon.open
    

    之前:

    sqlcon = New SqlConnection("Data Source=SENBONZAKURA\SQLEXPRESS;Initial Catalog=testing;User ID=SenbonZakura/Rew;")
    

    这就是你的 null ref 的来源。在调用 open 之前,您需要“新建”sqlcon。

    试试这个:

    sqlcon = New SqlConnection("Data Source=SENBONZAKURA\SQLEXPRESS;Initial Catalog=testing;User ID=SenbonZakura/Rew;")
    
    sqlcon.open
    
    sqlcom = New SqlCommand("select * from [student]", sqlcon)
    
    Dim strsql As String = "insert into [student]([ID], [LASTNAME], [FIRSTNAME], [SCHOOL]) values('" + idnum + "','" + lname + "','" + fname + "','" + skul + "')"
    
    
    sqlcom.ExecuteNonQuery()
    

    由于我们不了解您的环境,因此很难帮助您处理连接字符串。但这里有一个 great 参考链接:http://connectionstrings.com/

    【讨论】:

    • 在vb.net中没有添加数据源也可以连接吗?
    • 绝对。我假设您在谈论设计器中的 DataSource 对象?如果是这样,那么它只是连接到数据的一种方式......“视觉上”的 MS 使这变得非常容易,但你会更好地留在“原始”代码中,就像到目前为止一样。但是,开始时,DataSource 是一个非常简单的方法。
    【解决方案2】:

    Paul 是对的,但是除了 Paul 的回答之外,由于 SqlConnection 实现了 IDisposable 接口,我建议你将它封装在 using 语句中。查看更多关于在this post中使用的信息

    另一个重要建议是使用参数将值传递给您的查询。它为您提供安全性,代码更简单......

    完整的代码是这样的:

    Using sqlcon As New SqlConnection("Data Source=SENBONZAKURA\SQLEXPRESS;Initial Catalog=testing;User ID=SenbonZakura/Rew;")
    
        sqlcon.Open()
        Dim sqlcom As New SqlCommand()
        sqlcom.Connection = sqlcon
    
        sqlcom.CommandText = "INSERT INTO [student](ID, LASTNAME, FIRSTNAME, SCHOOL) VALUES (@ParameterID, @ParameterLastName, @ParameterFirstName, @ParameterSchool)"
    
        sqlcom.Parameters.AddWithValue("@ParameterID", TextBox1.Text)
        sqlcom.Parameters.AddWithValue("@ParameterLastName", TextBox2.Text)
        sqlcom.Parameters.AddWithValue("@ParameterFirstName", TextBox3.Text)
        sqlcom.Parameters.AddWithValue("@ParameterSchool", TextBox4.Text)
    
        sqlcom.ExecuteNonQuery()
    
    End Using
    
    • 编辑

    请注意,我省略了"select * from [student]",您没有使用此查询!

    【讨论】:

    • 哎呀!真的。谢谢约翰,我会注意的:-)
    猜你喜欢
    • 2010-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-13
    • 1970-01-01
    相关资源
    最近更新 更多