anti-keseronokan (old)
Fun Stuff for Anti-Fun People
This blog has moved to http://ikhwanhayat.net
Monday, July 19, 2004
Petualangan .NET: Insert dgn Unique Column
Ini adalah contoh untuk memasukkan data di dalam database dalam satu aplikasi web ASP.NET menggunakan Ms SQL Server. Dalam contoh ini, kita akan memasukkan ke data ke dalam table department yang mempunyai column dept_id dan dept_name. dept_id adalah Primary Key. dept_name adalah nama department tersebut, dan tidak boleh berulang. department
Dim count As Integer
Dim deptName As String = TextBox1.Text
Dim sqlCount As New SqlCommand("SELECT COUNT(*) _
» FROM department WHERE dept_name=@dept_name", _
» Conn)
sqlCount.Parameters.Add("@dept_name", _
» SqlDbType.VarChar, 50).Value = deptName
Dim sqlInsert As New SqlCommand("INSERT INTO _
» department(dept_name) VALUES (@dept_name)", Conn)
sqlInsert.Parameters.Add("@dept_name", _
» SqlDbType.VarChar, 50).Value = deptName
Conn.Open()
' Kita perlu uji sama ada sudah wujud department
' dengan nama sama seperti yang diinput . count
' akan meyimpan hasil dari query count, iaitu
' memulangkan jumlah row yang mempunyai
' dept_name = deptName
count = sqlCount.ExecuteScalar()
If count > 0 Then
Label1.Text = "Department " + deptName + _
» " already exist!"
'jika tiada barulah kita laksanakan query insert
Else
sqlInsert.ExecuteNonQuery()
Label1.Text = "Department " + deptName + _
» " added tor record."
End If
Conn.Close()
Tetapi melalui cara ini, kita perlu melakukan dua round-trip ke SQL Server, satu untuk COUNT dan satu lagi untuk INSERT. Cara alternatif berikut dapat menjimatkan satu round-trip iaitu dengan mengeset column dept_name sebagai UNIQUE di dalam Ms SQL. Caranya (dipetik dari help file Ms SQL) adalah berikut:
Kemudian kita ubah code di atas menjadi :
- Open the Table Designer for the table that will contain the constraint, right-click in the Table Designer, and choose Properties from the shortcut menu.
- Choose the Indexes/Keys tab.
- Choose New. A system-assigned name appears in the Index name box.
- Under Column name, expand the list of columns and select the column that you want to attach the constraint to. To attach the constraint to multiple columns, select the additional columns in subsequent rows.
- Select the Create UNIQUE check box.
- Select the Constraint option.
Dim sqlInsert As New SqlCommand("INSERT INTO _
» department(dept_name) VALUES (@dept_name)", Conn)
sqlInsert.Parameters.Add("@dept_name", _
» SqlDbType.VarChar, 50).Value = newDept
Try
Conn.Open()
sqlInsert.ExecuteNonQuery()
Label1.Text = "Department " + dept_name + _
» " added successfully."
' Oleh kerana kita telah set dept_name sebagai
' UNIQUE, maka jika user cuba menginput
' dept_name yang berulang akan terhasil exception.
Catch ex As SqlClient.SqlException
' 2627 ialah error number bagi violation of
' constraint. Anda boleh merujuk kandungan
' table master.dbo.sysmessages didalam
' server Ms SQL untuk senarai error msg
If ex.Number = 2627 Then
Label1.Text = "Designation " + _
» desig_name + " already exist!"
Else
' Jika ada error lain
Label1.Text = "Error in database _
» transaction!"
End If
Finally
Conn.Close()
End Try

0 Comments:
Post a Comment
<< Home