200 likes | 436 Views
Kết nối CSDL với VC6.0. Giảng viên : Trần Anh Tuấn A Bộ Môn : Ứng dụng tin học. Nội dung. Truy xuất với ODBC/DAO Truy xuất với OLEDB Truy xuất với ADO. Truy xuất với ODBC/DAO. Cấu trúc ODBC :. Truy xuất với ODBC/DAO. Cách dùng : New Class đặt tên CTestSet (base : CRecordSet)
E N D
Kết nối CSDL với VC6.0 Giảng viên : Trần Anh Tuấn A Bộ Môn : Ứng dụng tin học
Nội dung • Truy xuất với ODBC/DAO • Truy xuất với OLEDB • Truy xuất với ADO
Truy xuất với ODBC/DAO • Cấu trúc ODBC :
Truy xuất với ODBC/DAO • Cách dùng : • New Class đặt tên CTestSet (base : CRecordSet) • Chọn DB Access muốn truy xuất • Trong CTestView thêm biến : CTestSet* m_pSet • Trong CTestDoc thêm biến :CTestSet m_TestSet
Truy xuất với ODBC/DAO • Khởi Tạo Kết Nối : void CTestView::OnInitialUpdate() { CScrollView::OnInitialUpdate(); CSize sizeTotal(8000, 10500); SetScrollSizes(MM_HIENGLISH, sizeTotal); m_pSet = &GetDocument()->m_TestSet; // Remember that documents/views are reused in SDI applications! if (m_pSet->IsOpen()) { m_pSet->Close(); } m_pSet->Open(); }
void CEx31aView::OnDraw(CDC* pDC) { TEXTMETRIC tm; pDC->GetTextMetrics(&tm); int nLineHeight=tm.tmHeight+tm.tmExternalLeading; CPoint pText(0,0); int y = 0; CString str; if (m_pSet->IsBOF()) { // detects empty recordset return; } m_pSet->MoveFirst(); // fails if recordset is empty while (!m_pSet->IsEOF()) { str.Format("%ld", m_pSet->m_StudentID); pDC->TextOut(pText.x, pText.y, str); pDC->TextOut(pText.x+1000, pText.y, m_pSet->m_Name); str.Format("%d", m_pSet->m_GradYear); pDC->TextOut(pText.x+4000, pText.y, str); m_pSet->MoveNext(); pText.y -= nLineHeight; } } • Truy Xuất Dữ Liệu :
Truy xuất với ODBC/DAO • Cách dùng DAO • CDaoDatabase aDB; • COleVariant var; • aDB.Open(“C:\\.......\\SinhVien.mdb”,FALSE,TRUE) • CDaoRecordset aRS(&aDB); • aRS.Open(AFX_DAO_USE_DEFAULT_TYPE, ”Select * From ……” , 0 ); • While(!aRS.IsEOF()) • { • Var = aRS.GetFieldValue(0); • CString Str = (LPCSTR)var.bstrVal; • aRS.MoveNext(); • } • aRS.Close() ; aDB.Close();
Truy Xuất OLEDB • OLEDB (Object Linking and Embedding Data Base ) • OLEDB là một tập hợp các giao diện truy xuất dữ liệu thông qua COM. • Cấu trúc : • Enumerators: có tác vụ tìm các nguồn dữ liệu khả dụng • Data source objects: Data source objects chứa các cơ chế kết nối tới nguồn dữ liệu • Sessions: Sessions thể hiện một kết nối(phiên làm việc) đến nguồn dữ liệu • Transaction: là đối tượng quản lý các thao tác truy xuất dữ liệu và bảo đảm an toàn dữ liệu • Commands: là đối tượng cho phép thực thi các lệnh SQL
Truy Xuất ADO • ADO là một tập hợp các giao diện truy xuất dữ liệu thông qua COM (tương tự như OLEDB nhưng sử dụng đơn giản hơn). • ADO đóng vai trò trung gian tương tác với chương trình ứng dụng và cơ sở dữ liệu, được thể hiện như hình sau:
Truy Xuất ADO • Cấu trúc ADO Connection: là đối tượng quản lý các tác vụ truy cập/kết nối cơ sở dữ liệu. Command: là đối tượng quản lý các tác vụ cập nhật dữ liệu Recordset: là đối tượng quản lý dữ liệu truy vấn được Error: là đối tượng quản lý lỗi xãy ra
Truy Xuất ADO • Cách truy xuất : Xem cụ thể trong file • Khai báo chuỗi connection : • // Kết nối đến Access: • m_szConnection="Provider=Microsoft.JET.OLEDB.4.0;Datasource=xxx”; • // Kết nối đến SQL Server: • m_szConnection="Provider=SQLOLEDB;Datasource=my_server_name; • //Visual Fox Pro • strConnection = _T("Driver={Microsoft Visual Foxpro Driver};UID=;" SourceType=DBC;SourceDB=C:\\DatabasePath\\MyDatabase.dbc;Exclusive=No");
Truy Xuất ADO • //ODBC Driver for Oracle • strConnect = _T(“ • Driver={Microsoft ODBC for Oracle}; Server=OracleServer.world;" "Uid=MyUsername;Pwd=MyPassword;“ • ); • //ODBC Driver for MySQL • StrConnect = _T( • "Driver={MySQL ODBC 3.51 Driver};Server=localhost;" "Database=MyDatabase;User=MyUserName;Password=MyPassword;Option=4;“ • ); • …….
Đưa ADO và OLE_DB vào Ứng dụng • Tạo project SDI với lớp cơ sở CFormView • Đăng ký các ActiveX Controls
Đưa ADO và OLE_DB vào Ứng dụng // Query Data UpdateData(TRUE); m_ado.SetRecordSource(m_query); m_ado.Refresh(); //Lấy từng dữ liệu C_Recordset cRS; cRS = m_ado.GetRecordset();