使用 VB.NET 更新 SQL 数据库
Update SQL database using VB.NET
代码没有抛出任何错误,只是没有执行语句
Private Sub Update_Program(item As Programme)
'Set Command
SchoolTypes.Connexion.Open()
item.Command = New SqlClient.SqlCommand("UPDATE T_Programme Set pro_nom='@nom' , pro_nbr_unites=@nom , pro_nbr_heures=@unit WHERE pro_no ='@no'", SchoolTypes.Connexion)
''Add Parameter
item.Command.Parameters.Add("@no", SqlDbType.VarChar, 6)
item.Command.Parameters.Add("@nom", SqlDbType.VarChar, 50)
item.Command.Parameters.Add("@unit", SqlDbType.Float)
item.Command.Parameters.Add("@heures", SqlDbType.Int)
''''Set Values
item.Command.Parameters("@no").Value = item.Pro_No
item.Command.Parameters("@nom").Value = item.Pro_Nom
item.Command.Parameters("@unit").Value = item.Pro_Nbr_Unit
item.Command.Parameters("@heures").Value = item.Pro_Nbr_Heure
Try
If item.Command.ExecuteNonQuery() > 0 Then
MsgBox("Modifier avec Succes!")
End If
SchoolTypes.Connexion.Close()
Catch ex As Exception
err.ShowDetails(System.Reflection.MethodBase.GetCurrentMethod(), ex)
End Try
End Sub
我已经测试了我的命令,它可以在 sql 上运行,但不能在程序上运行...
这是我的数据库的粘贴
Database
你的命令语句是错误的。您不应在更新语句中为参数添加“''”标记。
而且你的输入也不匹配。下面应该是您的更新声明。
"UPDATE T_Programme Set pro_nom=@nom , pro_nbr_unites=@unit , pro_nbr_heures=@heures WHERE pro_no =@no"
我试过下面的代码。而且效果很好。
Private Sub Form1_Load(sender As Object, e As System.EventArgs) Handles Me.Load
Dim rowsAffected As Integer
Using con As New SqlConnection("server=.;database=Test;integrated security=true")
Using cmd As New SqlCommand("UPDATE T_Programme Set pro_nom=@nom , pro_nbr_unites=@unit , pro_nbr_heures=@heures WHERE pro_no =@no", con)
cmd.Parameters.Add("@no", SqlDbType.VarChar).Value = "1234"
cmd.Parameters.Add("@nom", SqlDbType.VarChar).Value = "qwerty"
cmd.Parameters.Add("@unit", SqlDbType.Float).Value = 12.0
cmd.Parameters.Add("@heures", SqlDbType.Int).Value = 2
con.Open()
rowsAffected = cmd.ExecuteNonQuery()
End Using
End Using
End Sub
代码没有抛出任何错误,只是没有执行语句
Private Sub Update_Program(item As Programme)
'Set Command
SchoolTypes.Connexion.Open()
item.Command = New SqlClient.SqlCommand("UPDATE T_Programme Set pro_nom='@nom' , pro_nbr_unites=@nom , pro_nbr_heures=@unit WHERE pro_no ='@no'", SchoolTypes.Connexion)
''Add Parameter
item.Command.Parameters.Add("@no", SqlDbType.VarChar, 6)
item.Command.Parameters.Add("@nom", SqlDbType.VarChar, 50)
item.Command.Parameters.Add("@unit", SqlDbType.Float)
item.Command.Parameters.Add("@heures", SqlDbType.Int)
''''Set Values
item.Command.Parameters("@no").Value = item.Pro_No
item.Command.Parameters("@nom").Value = item.Pro_Nom
item.Command.Parameters("@unit").Value = item.Pro_Nbr_Unit
item.Command.Parameters("@heures").Value = item.Pro_Nbr_Heure
Try
If item.Command.ExecuteNonQuery() > 0 Then
MsgBox("Modifier avec Succes!")
End If
SchoolTypes.Connexion.Close()
Catch ex As Exception
err.ShowDetails(System.Reflection.MethodBase.GetCurrentMethod(), ex)
End Try
End Sub
我已经测试了我的命令,它可以在 sql 上运行,但不能在程序上运行...
这是我的数据库的粘贴 Database
你的命令语句是错误的。您不应在更新语句中为参数添加“''”标记。
而且你的输入也不匹配。下面应该是您的更新声明。
"UPDATE T_Programme Set pro_nom=@nom , pro_nbr_unites=@unit , pro_nbr_heures=@heures WHERE pro_no =@no"
我试过下面的代码。而且效果很好。
Private Sub Form1_Load(sender As Object, e As System.EventArgs) Handles Me.Load
Dim rowsAffected As Integer
Using con As New SqlConnection("server=.;database=Test;integrated security=true")
Using cmd As New SqlCommand("UPDATE T_Programme Set pro_nom=@nom , pro_nbr_unites=@unit , pro_nbr_heures=@heures WHERE pro_no =@no", con)
cmd.Parameters.Add("@no", SqlDbType.VarChar).Value = "1234"
cmd.Parameters.Add("@nom", SqlDbType.VarChar).Value = "qwerty"
cmd.Parameters.Add("@unit", SqlDbType.Float).Value = 12.0
cmd.Parameters.Add("@heures", SqlDbType.Int).Value = 2
con.Open()
rowsAffected = cmd.ExecuteNonQuery()
End Using
End Using
End Sub