Net

  • November 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Net as PDF for free.

More details

  • Words: 1,712
  • Pages: 11
--------Thế nào là "di chuyển bản ghi", có lẽ cũng chẳng ai biết. Thông thường muốn lấy thông tin về một bản ghi nào, mình thường dùng đối tượng DataRow. Ví dụ : Lấy bản ghi thứ 10 DataRow dtr = dataSet.Tables[0].Rows[i]; sau đó muốn lấy thông tin cụ thể của từng trường dữ liệu thì dùng: dtr["tên trường"]. Ví dụ Nếu muốn lấy tên nhân viên thì dùng: string employeeName = dtr["EmployeeName"].ToString(). ------------Trong cấu trúc DataSet thì không có record, mà chỉ chứa trong các bảng của DataSet thôi. Do vậy bạn muốn di chuyển qua lại giữa các Record trong bảng thì có rất nhiều cách, tuy nhiên Microsoft đã khuyên nên dùng đối được DataReader. Bạn có thể tham khảo cách sau: System.Data.DataTable _dt1 = new System.Data.DataTable(); System.Data.DataTableReader _reader = _dt1.CreateDataReader(); while (_reader.Read()) { //Đọc dữ liệu ở đây Console.Write("{0} ", _reader["Tên field"]); } --------Khi bạn fill vào dataSet bạn khai báo biến numRows để nhận tổng số bản ghi: int numRows = dataAdapter.Fill(dataSet); sau đó bạn muốn đến bản ghi nào thì dùng DataRow để duyệt: DataRow dtr = dataSet.Tables[0].Rows[i]; Giả dụ muốn đến bản ghi cuối: DataRow dtr = dataSet.Tables[0].Rows[numRows - 1]; Nếu bạn muốn xây dựng chương trình kiểu như duyệt các bản ghi sau đó ấn next, preview ... thì trong VS cũng có hỗ trợ bạn làm đấy. Cái DataFormWizard sẽ làm

tất cho bạn. Bạn hãy mua cuốn: Lập trình CSDL bằng C# (tập 4) của ông Dương Quang Thiện mà đọc. Trong đó có chỉ rõ lắm.

Kết nối cơ sở dữ liệu với SQL2000 trong visual basic.net Public sqlConn As SqlClient.SqlConnection Public Sub OpenTheDataBase() Try Dim strConn As String strConn = "Server=yourSV; UID=uid; PWD=pass;Database=yourDataBase" sqlConn = New SqlClient.SqlConnection(strConn) sqlConn.Open() Catch MsgBox("Không kết nối được với Cơ sở dữ liệu!") Exit Sub End Try End Sub

Xây dựng class để truy cập CSDL + Viết hàm kiểm tra kết nối. + Các hàm khác ( Điền dữ liệu vào đối tượng bảng làm source cho ComboBox, DataGridView, ListView ..., Hàm xác nhận Login, Hàm nhận tham số dùng để Insert or Update, ....) đều thực thi dựa vào vào Hàm kiểm tra kết nối trên. + Chỉ cần tạo thể hiện của lớp kiết nối này rồi gọi các phương thức của nó thông qua các tham số tùy biến. Theo cách này bạn cũng dễ dàng cài đặt chồng phương thức. + Nếu trong Project của bạn cần phương thức dùng chung có chức năng tương tự nhau thì gom chúng lại thành 1 class. VD: lớp kết nối và thao tác DL, Lớp kiểm tra DL, ... Imports System.Data Imports System.Data.SqlClient Public Class DbHelper #Region "Singleton" Private Shared helper As DbHelper = Nothing Public Shared ReadOnly Property Instance() As DbHelper Get If helper Is Nothing Then helper = New DbHelper() End If Return helper End Get End Property Public Shared Sub RemoveInstance() helper = Nothing End Sub #End Region #Region "Contructor" Public Sub New() Me.Command.Connection = (New SqlConnection()) End Sub

Public Sub New(ByVal connectString As String, Optional ByVal throwError As Boolean = True) Me.Command.Connection = (New SqlConnection(connectString)) Me._throwError = throwError End Sub Public Sub Dispose() Me.Command.Dispose() End Sub #End Region #Region "Variable" Private Command As New SqlCommand() #End Region #Region "Properties" Private _throwError As Boolean = True Public Property ThrowError() As Boolean Get Return _throwError End Get Set(ByVal value As Boolean) _throwError = value End Set End Property Private _messageError As String = String.Empty Public ReadOnly Property MessageError() As String Get Return _messageError End Get End Property Public WriteOnly Property ConnectString() As String Set(ByVal value As String) Me.Command.Connection.ConnectionString = value End Set End Property #End Region #Region "Method : Private" Private Sub OpenConnect() Me.Command.Connection.Open() End Sub Private Sub CloseConnect() Me.Command.Connection.Close() End Sub #End Region

#Region "Method : Public" Public Function ExecuteNonQuery(ByVal commandText As String, Optional ByVal commandType As CommandType = CommandType.Text) As Int32 Dim iResult As Int32 = 0 Try Me.OpenConnect() Me.Command.CommandType = commandType Me.Command.CommandText = commandText iResult = Me.Command.ExecuteNonQuery() Me.CloseConnect() Catch ex As Exception Me.CloseConnect() If Not Me.ThrowError Then Me._messageError = ex.Message Else Throw End If End Try Return iResult End Function Public Function ExecuteScalar(ByVal commandText As String, Optional ByVal commandType As CommandType = CommandType.Text) As Int32 Dim iResult As Object = Nothing Try Me.OpenConnect() Me.Command.CommandType = commandType Me.Command.CommandText = commandText iResult = Me.Command.ExecuteScalar() Me.CloseConnect() Catch ex As Exception Me.CloseConnect() If Not Me.ThrowError Then Me._messageError = ex.Message Else Throw End If End Try Return iResult End Function Public Function ExecuteReader(ByVal commandText As String, Optional ByVal commandType As CommandType = CommandType.Text) As SqlDataReader Dim reader As SqlDataReader = Nothing Try Me.OpenConnect() Me.Command.CommandText = commandText Me.Command.CommandType = commandType reader = Me.Command.ExecuteReader(CommandBehavior.CloseConnection) Catch ex As Exception Me.CloseConnect() If Not Me.ThrowError Then Me._messageError = ex.Message Else

Throw End If End Try Return reader End Function Public Function ExecuteDataSet(ByVal commandText As String, Optional ByVal commandType As CommandType = CommandType.Text) As DataSet Dim dsResult As New DataSet Try Me.OpenConnect() Me.Command.CommandText = commandText Me.Command.CommandType = commandType Dim adapter As New SqlDataAdapter(Me.Command) adapter.Fill(dsResult) Me.CloseConnect() Catch ex As Exception Me.CloseConnect() If Not Me.ThrowError Then Me._messageError = ex.Message Else Throw End If End Try Return dsResult End Function Public Function ExecuteDataSet(ByVal commandText As String, ByVal startRecord As Int32, ByVal maxRecord As Int32, Optional ByVal commandType As CommandType = CommandType.Text) As DataSet Dim dsResult As New DataSet Try Me.OpenConnect() Me.Command.CommandText = commandText Me.Command.CommandType = commandType Dim adapter As New SqlDataAdapter(Me.Command) adapter.Fill(dsResult, startRecord, maxRecord, "dsResult") Me.CloseConnect() Catch ex As Exception Me.CloseConnect() If Not Me.ThrowError Then Me._messageError = ex.Message Else Throw End If End Try Return dsResult End Function #End Region #Region "Method : Public for Parameter" Public Sub AddParameter(ByVal name As String, ByVal value As Object) Dim param As SqlParameter = New SqlParameter(name, value) Me.Command.Parameters.Add(param)

End Sub Public Sub AddParameter(ByVal name As String, ByVal type As SqlDbType, ByVal value As Object) Me.Command.Parameters.Add(name, type).Value = value End Sub Public Sub AddParameterOut(ByVal name As String) Dim param As SqlParameter = New SqlParameter(name, 0) param.Direction = ParameterDirection.Output Me.Command.Parameters.Add(param) End Sub Public Sub AddParameterOut(ByVal name As String, ByVal type As SqlDbType) Dim param As SqlParameter = New SqlParameter(name, type) param.Value = 0 param.Direction = ParameterDirection.Output Me.Command.Parameters.Add(param) End Sub Public Sub ClearParameter() Me.Command.Parameters.Clear() End Sub #End Region End Class Đây là vài lớp đơn giản, và được viết rất nghiệp dư: clsConnection , clsTestDataInput class clsConnection { static string STRCON ="workstation id=" + SystemInformation.ComputerName + ";packet size=4096;integrated security=SSPI;data source=" + "\"(local)\";persist security info=False;initial catalog=HotelV1G2"; SqlConnection conn; SqlCommand comm; SqlDataReader dr; SqlDataAdapter data; public bool Connection() { bool bol = true; try { using (conn) { conn = new SqlConnection(STRCON); conn.Open(); } } catch (Exception) { MessageBox.Show("Error connection! Check connection to sql server!!!"); Application.Exit(); } return bol ; }

public DataTable GetDataTable(string sql) { DataTable table = new DataTable(); try { using (data) { if (Connection()) { data = new SqlDataAdapter(sql, conn); data.Fill(table); } } } catch (Exception ex) { MessageBox.Show(ex.Message); } return table; } public string ExecuteSQL(string sql) { string error = ""; if (Connection()) { try { using (comm) { comm = new SqlCommand(); comm.CommandText = sql; comm.Connection = conn; comm.ExecuteNonQuery(); } } catch (SqlException ex) { error = ex.Message; MessageBox.Show(error); } } return error; } public string CustomersExecuteSQL(string sql, ref string[] arrParas) { string error = ""; if (Connection()) { try { using (comm) { comm = new SqlCommand(sql, conn); comm.Parameters.Add("@CustomerName", arrParas[0]);

comm.Parameters.Add("@Birthday", arrParas[1]); comm.Parameters.Add("@Gender", arrParas[2]); comm.Parameters.Add("@Identity", arrParas[3]); comm.Parameters.Add("@Address", arrParas[4]); comm.Parameters.Add("@Telephone", arrParas[5]); comm.Parameters.Add("@Email", arrParas[6]); comm.Parameters.Add("@Nationality", arrParas[7]); comm.ExecuteNonQuery(); } } catch (Exception ex) { error = ex.Message; MessageBox.Show(error); } } return error; } .................................. ============================================================== internal static class clsTestDataInput { internal static Boolean CheckIsNumber(string textInput) { Boolean bol = false; foreach (char letter in textInput) { if (char.IsDigit(letter)) { bol = true; } else { return bol = false; } } return bol; } } ............................. ================================================================ Sử dụng các class trên: + Đối với class clsConnection khi sử dụng cần tạo thể hiện + class clsTestDataInput thì sử dụng trực tiếp. VD: clsTestDataInput.CheckIsNumber(txt_ID.Text) o day tui dung CSDL Oracle Imports System.Data.OleDB

Module Mod_Connection Public m_user As String Public m_pass As String Public m_schema As String Public DB_Connection As New OleDb.OleDbConnection Public WithEvents Trackuser As New ClsThreadingTracking Public TimeOut As Boolean Dim t As Threading.Thread Public Sub Connect_data() Dim strconn As String strconn = "Provider=MSDAORA.1;Password=" & m_pass & ";User ID=" & m_user & ";Data Source=" & m_schema & ";Persist Security Info=false" DB_Connection.ConnectionString = strconn DB_Connection.Open() End Sub Public Function Init() As Boolean m_schema = CStr(Readval(HKEY_CURRENT_USER, "software\SSM", "Server")) m_user = CStr(Readval(HKEY_CURRENT_USER, "software\SSM", "Datauser")) If IsNumeric(Readval(HKEY_CURRENT_USER, "software\SSM", "Pass")) Then m_pass = Decrypt(Readval(HKEY_CURRENT_USER, "software\SSM", "Pass")) Else Exit Function End If Return ((m_user <> "") And (m_schema <> "")) End Function end module class thuc thí sql Public Class clsData Private cmd As OleDb.OleDbCommand Public Function RunSelectSQL(ByVal strSQL As String) As DataSet Try Dim da As OleDb.OleDbDataAdapter Dim cmdSELECT As OleDb.OleDbCommand Dim ds As DataSet da = New OleDb.OleDbDataAdapter(strSQL, DB_Connection) cmdSELECT = New OleDb.OleDbCommand(strSQL, DB_Connection) da.SelectCommand = cmdSELECT ds = New DataSet da.Fill(ds) Return ds Catch GetError As System.Exception MessageBox.Show(GetError.Message) Return Nothing End Try End Function Public Function RunInsertSQL(ByVal sSQLInsert As String, ByVal tblname As String) As DataSet Try Dim da As OleDb.OleDbDataAdapter Dim cmdSELECT As OleDb.OleDbCommand

Dim ds As DataSet da = New OleDb.OleDbDataAdapter(sSQLInsert, DB_Connection) cmdSELECT = New OleDb.OleDbCommand(sSQLInsert, DB_Connection) da.SelectCommand = cmdSELECT ds = New DataSet da.Fill(ds, tblname) Return ds Catch GetError As System.Exception MessageBox.Show(GetError.Message) Return Nothing End Try End Function Public Function RunDeleteSQL(ByVal sSQLDelete As String, ByVal tblname As String) As DataSet Try Dim da As OleDb.OleDbDataAdapter Dim cmdDELETE As OleDb.OleDbCommand Dim ds As DataSet da = New OleDb.OleDbDataAdapter(sSQLDelete, DB_Connection) cmdDELETE = New OleDb.OleDbCommand(sSQLDelete, DB_Connection) da.DeleteCommand = cmdDELETE ds = New DataSet da.Fill(ds, tblname) Return ds Catch GetError As System.Exception MessageBox.Show(GetError.Message) Return Nothing End Try End Function Public Function RunUpdateSQL(ByVal sSQLUpdate As String, ByVal tblname As String) As DataSet Try Dim da As OleDb.OleDbDataAdapter Dim cmdUPDATE As OleDb.OleDbCommand Dim ds As DataSet da = New OleDb.OleDbDataAdapter(sSQLUpdate, DB_Connection) cmdUPDATE = New OleDb.OleDbCommand(sSQLUpdate, DB_Connection) da.UpdateCommand = cmdUPDATE ds = New DataSet da.Fill(ds, tblname) Return ds Catch GetError As System.Exception MessageBox.Show(GetError.Message) Return Nothing End Try End Function End Class string connection = "server=(local);Initial Catalog=;Integrated Security=SSPI"; Trong đó: - server = tên instance của SQL server mà bạn kết nối, thường nếu là máy của bạn thì để là (local) hoặc localhost.

- Initial Catalog = tên database. - Integrated Security=SSPI chính là dùng để dùng theo kiểu windows authentication

Related Documents

Net
November 2019 45
Net
May 2020 23
Net
October 2019 36
Net
April 2020 24
Net
May 2020 24
Net
December 2019 29