2014-02-23 45 views
0
Imports System 
Imports System.Data 
Imports System.Data.SqlClient 

Public Class Form1 
    Dim condi As Integer 
    Dim con As New SqlConnection("Password = 12345 ; User ID = sa ; Initial Catalog=log_In ; Data Source= DELL-PC") 

'ADD 
Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click 
    con.Open() 
    If MsgBox("Are you sure you want to save changes?", vbYesNo) = MsgBoxResult.Yes Then 
     If condi = 1 Then 
      Dim cmd As New SqlCommand("Insert Into emp (empName,empUserName,empPass) Values (@empName,@empUser,@empPass)", con) 
      cmd.Parameters.AddWithValue("empName", txtName.Text) 
      cmd.Parameters.AddWithValue("empUser", txtUser.Text) 
      cmd.Parameters.AddWithValue("empPass", txtPass.Text) 
      cmd.ExecuteNonQuery() 
      con.Close() 
      MessageBox.Show("Record successfully added.") 
     ElseIf MsgBox("Are you sure you want to save changes?", vbYesNo) = MsgBoxResult.No Then 
      con.Close() 
     End If 
    End If 
End Sub 

'EDIT 
Private Sub btnEdit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEdit.Click 
    con.Open() 
    If MsgBox("Are you sure you want to save changes?", vbYesNo) = MsgBoxResult.Yes Then 
     Dim cmd As New SqlCommand("update emp set empName = @empName, empUserName = @empUser ,empPass = @empPass where empName = @empName ", con) 
     cmd.Parameters.AddWithValue("empName", txtName.Text) 
     cmd.Parameters.AddWithValue("empUser", txtUser.Text) 
     cmd.Parameters.AddWithValue("empPass", txtPass.Text) 
     cmd.ExecuteNonQuery() 
     con.Close() 
     MessageBox.Show("Record successfully updated.") 
    ElseIf MsgBox("Are you sure you want to save changes?", vbYesNo) = MsgBoxResult.No Then 
     con.Close() 
    End If 
End Sub 

'DELETE 
Private Sub btnDelete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDelete.Click 
    con.Open() 
    If MsgBox("Are you sure you want to delete this record?", vbYesNo) = MsgBoxResult.Yes Then 
     Dim cmd As New SqlCommand("delete from emp where empName = @empName", con) 
     cmd.Parameters.AddWithValue("empName", txtName.Text) 
     cmd.ExecuteNonQuery() 
     con.Close() 
     MessageBox.Show("Record successfully deleted!.") 
    ElseIf MsgBox("Are you sure you want to delete this record?", vbYesNo) = MsgBoxResult.No Then 
     con.Close() 
    End If 
End Sub 
End Class 

嗨,我還是一名學生,這段代碼只是我同班同學的代碼。我們正在做一個系統,並且我選擇了一個對程序員來說非常簡單的監控和分析系統。很遺憾地說,我沒有參與編程。我甚至無法從頭開始做。但我仍然想學習。所以請告訴我這段代碼出了什麼問題。 請告訴我,如果我違反了一些論壇禮儀/規則。謝謝! :)這是一個可靠的添加編輯刪除VB代碼?

回答

0

這是件好事......你參數我們的投入,這是什麼是最重要

只有一兩件事改變...... 移動你的con.close陳述出你的別人的if語句,如果不是你沒有關閉你的連接!

像這樣

Private Sub btnEdit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEdit.Click 

     If MsgBox("Are you sure you want to save changes?", vbYesNo) = MsgBoxResult.Yes Then 
con.Open() 
Dim cmd As New SqlCommand("update emp set empName = @empName, empUserName = @empUser ,empPass = @empPass where empName = @empName ", con) 
      cmd.Parameters.AddWithValue("empName", txtName.Text) 
      cmd.Parameters.AddWithValue("empUser", txtUser.Text) 
      cmd.Parameters.AddWithValue("empPass", txtPass.Text) 
      cmd.ExecuteNonQuery() 
      con.Close() 
      MessageBox.Show("Record successfully updated.") 
      con.Close() 
     End If 

    End Sub 

make sure to change all the code... 
you may also want to make a single sub and call it... i will write it up in a min... 
again what you did is fine but i would use something like 


    Public Sub saveChanges(howto As String, txtName As String, txtUser As String, txtPass As String, condi As Integer) 
       Dim con As New SqlConnection("Password = 12345 ; User ID = sa ; Initial Catalog=log_In ; Data Source= DELL-PC") 
       Dim cmd As New SqlCommand 
       cmd.Connection = con 
       Select Case howto 
        Case "add" 
         cmd.CommandText = "Insert Into emp (empName,empUserName,empPass) Values (@empName,@empUser,@empPass)" 
        Case "edit" 
         condi = 1 
         cmd.CommandText = "update emp set empName = @empName, empUserName = @empUser ,empPass = @empPass where empName = @empName " 
        Case "delete" 
         condi = 1 
         cmd.CommandText = "delete from emp where empName = @empName" 
       End Select 
       'here we write the info 
       con.Open() 
       If MsgBox("Are you sure you want to save changes?", vbYesNo) = MsgBoxResult.Yes Then 
        If condi = 1 Then 
         cmd.Parameters.AddWithValue("empName", txtName) 
         cmd.Parameters.AddWithValue("empUser", txtUser) 
         cmd.Parameters.AddWithValue("empPass", txtPass) 
         cmd.ExecuteNonQuery() 
         con.Close() 
         MessageBox.Show("Record successfully added.") 
        End If 
       End If 
       con.Close() 
      End Sub 

,並調用它像這樣

call saveChanges ("add",txtName.text,txtUser.txt,txtPass.text,condi) 
你不必擔心康迪VAR附加之外,因爲我在選擇statment其設置爲1

希望這有助於!讓我知道如果你需要任何東西

+1

@ Ishey4-一個改變,我會讓它打開內部的if語句的連接。這樣連接就儘可能地開放。目前,如果用戶出於某種原因離開消息提示,則與數據庫的連接仍處於打開狀態。 –