无法插入SQL Server数据库

问题描述

我正在学习Visual Basic。现在,我无法将数据插入表中。我已经尝试了所有可能的查询,但仍然无法通过表单将数据插入表中。这是代码: 我表单中的代码

Private Sub UpisiButt_Click(sender As Object,e As EventArgs) Handles UpisiButt.Click
        InsertData()
    End Sub
    Private Sub InsertData()
        sql.AddParam("@sifra",TbSifra.Text)
        sql.AddParam("@naziv",TbNaziv.Text)
        sql.AddParam("@user","Root")
        sql.AddParam("@Skriven",0)
        sql.ExecQuery("INSERT INTO dbo.VrsteNalogaTable (Id,Sifra,Naziv,user,DatumUpisa,Skriven) VALUES (@sifra,@naziv,@user,GETDATE(),@Skriven);")
        MsgBox("Dodani podaci")
    End Sub
End Class

我从中加载函数的类

Imports System.Data
Imports System.Data.sqlClient
Public Class VrsteNalogaClassNET
    Private connection As New sqlConnection("SERVER=DESKTOP-SQMPH0E\JASIMsql;Database=VrsteNaloga;Trusted_Connection=True;User=Jasim;Pwd=1234;")
    Private DBCmd As sqlCommand
    Public DBDA As sqlDataAdapter
    Public DBDT As DataTable
    'Query Params
    Public Params As New List(Of sqlParameter)
    'Query Statistics
    Public RecordCount As Integer
    Public Exception As String

    Public Sub New()

    End Sub
    'Allow connection string override
    Public Sub New(ConnectionString As String)
        connection = New sqlConnection(ConnectionString)
    End Sub
    ' Execute query sub
    Public Sub ExecQuery(Query As String)
        'Reset query stats
        RecordCount = 0
        Exception = 0
        Try
            connection.open()
            ' CREATE DB Command
            DBCmd = New sqlCommand(Query,connection)
            ' LOAD ParaMS INTO DB COMMAND
            Params.ForEach(Sub(p) DBCmd.Parameters.Add(p))

            ' CLEAR ParaM
            Params.Clear()

            'EXECUTE COMMAND & FILL DATASET

            DBDT = New DataTable
            DBDA = New sqlDataAdapter(DBCmd)
            RecordCount = DBDA.Fill(DBDT)

        Catch ex As Exception
            'CAPTURE ERROR
            Exception = "ExecQuery Error: " & vbNewLine & ex.Message
        Finally
            If connection.State = ConnectionState.Open Then connection.Close()

        End Try
    End Sub
    'ADD ParaMS
    Public Sub AddParam(Name As String,Value As Object)
        Dim NewParam As New sqlParameter(Name,Value)
        Params.Add(NewParam)
    End Sub
End Class

注意:我可以选择数据并在网格上显示,麻烦是当我尝试通过表单插入时。

解决方法

替换此

DBDT = New DataTable
DBDA = New SqlDataAdapter(DBCmd)
RecordCount = DBDA.Fill(DBDT)

有了这个

RecordCount = DBCmd.ExecuteNonQuery() 

有关解释-请参阅我在您的问题下留下的评论

注意: RecordCount将返回所有受影响记录的编号,即使那些受触发器影响的记录(如果存在)。存储过程记录数将始终为-1