You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VB.NET无法连接SQL Server求助(附相关代码)

解决VB.NET连接SQL Server并执行插入的问题

我帮你梳理下代码里的几个关键问题,这些应该就是你连接失败或者插入执行出错的原因:

1. 拼写与语法错误

你的代码里有几处明显的拼写和语法问题:

  • 命名空间要区分大小写:Imports System.Data.SqlClient(不是system.data.sqlclient)
  • sqlcomma d是拼写错误,应该是SqlConnection
  • 按钮点击事件的定义不完整,需要补充完整的事件签名
  • 方法调用要加括号:MyConnection.Close()(不是Myconnection.close)

2. 未打开连接就执行命令

在执行ExecuteNonQuery()之前,必须先打开数据库连接,否则会直接抛出连接未打开的错误。

3. SQL语句的空格与语法问题

你拼接的SQL语句里,VALUES后面的字符串前后多了不必要的空格,会导致插入的数据带多余空格,甚至可能触发SQL语法错误。

4. 高危风险:SQL注入

直接把文本框的内容拼接到SQL语句里是非常危险的,很容易被SQL注入攻击,必须改用参数化查询来避免这个问题。


修正后的完整代码

Imports System.Data.SqlClient

Public Class customer_typer
    ' 建议后续把连接字符串放到App.config里,方便维护
    Private connectionString As String = "Data Source=wisdon;Initial Catalog=stock_management;User ID=sa;Password=managerz"

    Private Sub CUSTOMER_BT_Click(sender As Object, e As EventArgs) Handles CUSTOMER_BT.Click
        ' 使用Using语句自动释放连接和命令资源,避免连接泄漏
        Using myConnection As New SqlConnection(connectionString)
            Dim sqlStr As String = "INSERT INTO customer_type(customer_type) VALUES (@CustomerType)"
            
            Using myCommand As New SqlCommand(sqlStr, myConnection)
                ' 添加参数,避免SQL注入,同时处理输入的前后空格
                myCommand.Parameters.AddWithValue("@CustomerType", customertyper_txt.Text.Trim())
                
                ' 打开连接并执行插入
                myConnection.Open()
                myCommand.ExecuteNonQuery()
            End Using
        End Using
        
        ' 可选:插入成功后给用户提示
        MsgBox("客户类型添加成功!")
    End Sub
End Class

额外优化建议

  • 可以加上异常捕获,方便排查问题:
    Try
        ' 上面的插入代码
    Catch ex As Exception
        MsgBox("操作失败:" & ex.Message)
    End Try
    
  • 把连接字符串迁移到项目的App.config文件中,后续修改数据库信息不需要改动代码。

内容的提问来源于stack exchange,提问作者user9272061

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:53:17