Merhaba arkadaşlar bu makalemizde C++ çalışma anında formumuzdaki butona tıklayarak Access veritabanında Employess adlı tablo oluşturacağız. C++ da Windows Form nasıl ekleriz? Konusunu daha önceki makalede anlatmıştım. Önceki makaleye ulaşmak için Buraya tıklayabilirsiniz.
Access veritabanına bağlanabilmeniz için Access DataBase Engine bileşeni gerekebilir.
“Microsoft.ACE.OLEDB 16.0 (or version 12) Provider is not registered on the local machine” veya “Microsoft.ACE.OLEDB 16.0 (veya versiyon12) Sağlayıcısı yerel makinede kayıtlı değil” hata mesajını alıyorsanız, Access DataBase Engine bileşenini bilgisayarınıza kurmanız gerekecektir. Microsoft Access Database Engine 2016 Redistributable indirmek için buraya tıklayınız. Burada dikkat etmeniz gereken husus, bilgisayarınızda kurulu olan MS Office versiyonu 32 bit ise Database Engine 2016 32 bit setup’ını, eğer 64 bit ise Database Engine 2016 64 bit versiyonuna ait olan setup’ı indirmeniz önemlidir. Yoksa yukarıdaki hatayı almaya devam edilecektir. Bunun için MS Office versiyonuna Account (Hesap) kısmından bakıp öğrenmekte fayda olacaktır.
Son olarak uygulamanızda Access veritabanınıza bağlantı yaparken, bağlantı ifadenizde “… Microsoft.ACE.OLEDB.16.0” şeklinde kullanmanızdır.
Bu örneğimizde ADODB bağlantısı yapacağımız için, Solution Explorer’da projenize sağ tıklayıp Add > Reference kısmında ADODB bileşenini referansa ekleyin.
Şekil 1
Bu işlemleri yaptıktan sonra butonumuza tıkladığımızda çalışma anında Employees tablomuzun anında oluştuğunu göreceğiz.
Şekil 2
Şekil 3
MyForm.h
#pragma once
namespace cppcreatetable {
using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
using namespace System::Runtime::InteropServices;
using namespace System::Data::OleDb;
/// <summary>
/// Summary for MyForm
/// </summary>
public ref class MyForm : public System::Windows::Forms::Form
{
public:
MyForm(void)
{
InitializeComponent();
//
//TODO: Add the constructor code here
//
}
protected:
/// <summary>
/// Clean up any resources being used.
/// </summary>
~MyForm()
{
if (components)
{
delete components;
}
}
private: System::Windows::Forms::Button^ button1;
private: System::ComponentModel::IContainer^ components;
protected:
private:
/// <summary>
/// Required designer variable.
/// </summary>
#pragma region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
void InitializeComponent(void)
{
this->button1 = (gcnew System::Windows::Forms::Button());
this->SuspendLayout();
//
// button1
//
this->button1->Font = (gcnew System::Drawing::Font(L"Arial Narrow", 14.25F, System::Drawing::FontStyle::Regular, System::Drawing::GraphicsUnit::Point,
static_cast<System::Byte>(162)));
this->button1->Location = System::Drawing::Point(24, 48);
this->button1->Name = L"button1";
this->button1->Size = System::Drawing::Size(223, 55);
this->button1->TabIndex = 0;
this->button1->Text = L"button1";
this->button1->UseVisualStyleBackColor = true;
this->button1->Click += gcnew System::EventHandler(this, &MyForm::button1_Click);
//
// MyForm
//
this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
this->ClientSize = System::Drawing::Size(284, 156);
this->Controls->Add(this->button1);
this->Name = L"MyForm";
this->Text = L"MyForm";
this->Load += gcnew System::EventHandler(this, &MyForm::MyForm_Load);
this->ResumeLayout(false);
}
#pragma endregion
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)
{
ADODB::ConnectionClass^ con = gcnew ADODB::ConnectionClass;
String^ str;
Object^ obj = gcnew Object;
//we connect to an access database. access veritabanina baglaniyoruz.
con->Open(L"Provider=Microsoft.ACE.OLEDB.16.0;Data Source='D:\\persons.accdb'", L"", L"", 0);
//create a table. tablomuzu olusturuyoruz.
str = L"CREATE TABLE Employees (PersonId int,FirstName varchar(50),LastName varchar(50),Address varchar(150),City varchar(50),Explanation varchar(200)); ";
con->Execute(str, obj, 0);
MessageBox::Show(L"The Employees table of the persons database has been created." + "\r\n" + "persons veritabaninda Employees tablosu olusturuldu.");
con->Close();
}
private: System::Void MyForm_Load(System::Object^ sender, System::EventArgs^ e)
{
button1->Text = "Create a table";
this->Text = "Create a table example...";
}
};
}
MyForm.cpp
#include "MyForm.h"
using namespace System;
using namespace System::Windows::Forms;
[STAThreadAttribute]
void Main(array<String^>^ args) {
Application::EnableVisualStyles();
Application::SetCompatibleTextRenderingDefault(false);
cppcreatetable::MyForm form;
Application::Run(% form);
}
Bir makalenin daha sonuna geldik. Bir sonraki makalede görüşmek üzere. Bahadır ŞAHİN
0 comments:
Yorum Gönder