C++: read access data using ADOX.DLL and Syst…

2018-06-17 23:55:31来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

#pragma once
#include "Form2.h"

namespace cdemo {

	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::Data::OleDb;
	using namespace System::IO;

	/// <summary>
	/// Form1 摘要
	///http://1code.codeplex.com/
	///http://www.codeproject.com/Tips/810596/Csharp-VB-NET-Cplusplus-CLI-Create-read-and-write
	/// 警告: 如果更改此类的名称,则需要更改
	///          与此类所依赖的所有 .resx 文件关联的托管资源编译器工具的
	///          “资源文件名”属性。否则,
	///          设计器将不能与此窗体的关联
	///          本地化资源正确交互。
	/// </summary>
	public ref class Form1 : public System::Windows::Forms::Form
	{
	public:
		Form1(void)
		{
			InitializeComponent();
			//
			//TODO: 在此处添加构造函数代码
			//
		}

	protected:
		/// <summary>
		/// 清理所有正在使用的资源。
		/// </summary>
		~Form1()
		{
			if (components)
			{
				delete components;
			}
		}
	private: System::Windows::Forms::Label^  label1;
	private: System::Windows::Forms::DataGridView^  dataGridView1;
	private: System::Windows::Forms::ComboBox^  comboBoxTables;
	private: System::Windows::Forms::Button^  buttonOK;
	protected: 

	private:
		/// <summary>
		/// 必需的设计器变量。
		/// </summary>
		System::ComponentModel::Container ^components;

#pragma region Windows Form Designer generated code
		/// <summary>
		/// 设计器支持所需的方法 - 不要
		/// 使用代码编辑器修改此方法的内容。
		/// </summary>
		void InitializeComponent(void)
		{
			this->label1 = (gcnew System::Windows::Forms::Label());
			this->dataGridView1 = (gcnew System::Windows::Forms::DataGridView());
			this->comboBoxTables = (gcnew System::Windows::Forms::ComboBox());
			this->buttonOK = (gcnew System::Windows::Forms::Button());
			(cli::safe_cast<System::ComponentModel::ISupportInitialize^  >(this->dataGridView1))->BeginInit();
			this->SuspendLayout();
			// 
			// label1
			// 
			this->label1->AutoSize = true;
			this->label1->Location = System::Drawing::Point(533, 268);
			this->label1->Name = L"label1";
			this->label1->Size = System::Drawing::Size(41, 12);
			this->label1->TabIndex = 0;
			this->label1->Text = L"label1";
			// 
			// dataGridView1
			// 
			this->dataGridView1->ColumnHeadersHeightSizeMode = System::Windows::Forms::DataGridViewColumnHeadersHeightSizeMode::AutoSize;
			this->dataGridView1->Location = System::Drawing::Point(32, 84);
			this->dataGridView1->Name = L"dataGridView1";
			this->dataGridView1->RowTemplate->Height = 23;
			this->dataGridView1->Size = System::Drawing::Size(478, 344);
			this->dataGridView1->TabIndex = 1;
			this->dataGridView1->CellDoubleClick += gcnew System::Windows::Forms::DataGridViewCellEventHandler(this, &Form1::dataGridView1_CellDoubleClick);
			// 
			// comboBoxTables
			// 
			this->comboBoxTables->FormattingEnabled = true;
			this->comboBoxTables->Location = System::Drawing::Point(87, 27);
			this->comboBoxTables->Name = L"comboBoxTables";
			this->comboBoxTables->Size = System::Drawing::Size(121, 20);
			this->comboBoxTables->TabIndex = 2;
			// 
			// buttonOK
			// 
			this->buttonOK->Location = System::Drawing::Point(228, 27);
			this->buttonOK->Name = L"buttonOK";
			this->buttonOK->Size = System::Drawing::Size(75, 23);
			this->buttonOK->TabIndex = 3;
			this->buttonOK->Text = L"button1";
			this->buttonOK->UseVisualStyleBackColor = true;
			this->buttonOK->Click += gcnew System::EventHandler(this, &Form1::buttonOK_Click);
			// 
			// Form1
			// 
			this->AutoScaleDimensions = System::Drawing::SizeF(6, 12);
			this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
			this->ClientSize = System::Drawing::Size(586, 485);
			this->Controls->Add(this->buttonOK);
			this->Controls->Add(this->comboBoxTables);
			this->Controls->Add(this->dataGridView1);
			this->Controls->Add(this->label1);
			this->Name = L"Form1";
			this->Text = L"Form1";
			this->Load += gcnew System::EventHandler(this, &Form1::Form1_Load);
			this->FormClosed += gcnew System::Windows::Forms::FormClosedEventHandler(this, &Form1::Form1_FormClosed);
			(cli::safe_cast<System::ComponentModel::ISupportInitialize^  >(this->dataGridView1))->EndInit();
			this->ResumeLayout(false);
			this->PerformLayout();

		}
#pragma endregion



		String ^DBPath;

        OleDbConnection ^conn;
        OleDbDataAdapter ^adapter;
        DataTable ^dtMain;

	private: System::Void Form1_Load(System::Object^  sender, System::EventArgs^  e) {


                DBPath = Application::StartupPath + "\\test.mdb";
				 // create DB via ADOX if not exists
				 if (!File::Exists(DBPath)) {
					 ADOX::Catalog ^cat = gcnew ADOX::Catalog(); //添加引用 Interop.ADOX.2.8.dll
                     cat->Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + DBPath);
                     cat = nullptr;
				 }

				 // connect to DB
            	 conn = gcnew OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + DBPath);
            	 conn->Open();
     //         try {
					//OleDbCommand ^cmd = gcnew OleDbCommand("CREATE TABLE [geovindu] ([id] COUNTER PRIMARY KEY, [FirstName] MEMO, [Age] INT,[Email] MEMO);", conn); //创建表
     //       		cmd->ExecuteNonQuery();
					//delete cmd;
				 //} catch (Exception ^ex) {if (ex != nullptr) ex = nullptr; }

				 // get all tables from DB
				 DataTable ^dt = conn->GetSchema("Tables");
				 for (int i = 0; i < dt->Rows->Count; i++) {
                    if (dt->Rows[i]->ItemArray[dt->Columns->IndexOf("TABLE_TYPE")]->ToString() == "TABLE") {
                        comboBoxTables->Items->Add(dt->Rows[i]->ItemArray[dt->Columns->IndexOf("TABLE_NAME")]->ToString());
                    }


                 }
				 delete dt;



				 int i,pr=0;
				 for(i=1;i<=10;i++)				 
					 pr=pr*i;
                    
				 //char s="pr=%d";

				 this->label1->Text= pr.ToString();

				    
				 
				 //设置dataGridView的一些属性
    //        dataGridView1->Dock=DockStyle::Fill; 
    //        dataGridView1->AutoResizeColumns();
    //        dataGridView1->AutoSizeColumnsMode=DataGridViewAutoSizeColumnsMode::AllCells;
    //        dataGridView1->EnableHeadersVisualStyles=true;/*根据应用程序来设置的,如果为false则根据自己的设置来绘制*/

    //        //设置表头的属性
    //        DataGridViewCellStyle^ headerStyle=gcnew DataGridViewCellStyle;
    //        headerStyle->Font=gcnew System::Drawing::Font("Times New Roman",12,FontStyle::Bold);
    //        headerStyle->BackColor=Color::AliceBlue;
    //        headerStyle->ForeColor=Color::BurlyWood;
    //        dataGridView1->ColumnHeadersDefaultCellStyle=headerStyle;

    //        dataGridView1->AutoResizeColumnHeadersHeight();

				//DataSet^ myDataSet = gcnew DataSet("Game Data");
				//myDataSet->Tables->Add("Player");
				//myDataSet->Tables->Add("Score");
 
				//DataTable^ playerTable = myDataSet->Tables["Player"];
				//DataColumn^ firstNameColumn1 = playerTable->Columns->Add("First Name",String::typeid);
				//DataColumn^ lastNameColumn1 = playerTable->Columns->Add("Last Name",String::typeid);
				//playerTable->Columns->Add("Email", String::typeid);
				//playerTable->Rows->Add("geovin","du","geovindu@163.com");
				//playerTable->Rows->Add("聚文","涂","geovindu@qq.com");
    //             //1.
				////dataGridView1->DataSource=myDataSet->Tables["Player"];//playerTable;
				////2.
    //            dataGridView1->DataSource=playerTable;
				//dataGridView1->Refresh();
				////dataGridView1->DataBindings::get;

			 }
             
			 ////
	        private: System::Void dataGridView1_CellDoubleClick(System::Object^  sender, System::Windows::Forms::DataGridViewCellEventArgs^  e) {

             Form2 ^ frm2 = gcnew Form2();
			 frm2->Text="编辑资料";
			 frm2->textBox1->Text=dataGridView1->Rows[e->RowIndex]->Cells["FirstName"]->Value->ToString();
			 frm2->textBox2->Text=dataGridView1->Rows[e->RowIndex]->Cells["Email"]->Value->ToString();
             frm2->Show();
             //this->Hide();
                
                 
                
			 }
			
					 ///
	         private: System::Void buttonOK_Click(System::Object^  sender, System::EventArgs^  e) {

                if (comboBoxTables->SelectedItem == nullptr) return;

                adapter = gcnew OleDbDataAdapter("SELECT * FROM [" + comboBoxTables->SelectedItem->ToString() + "]", conn);

             gcnew OleDbCommandBuilder(adapter);

             dtMain = gcnew DataTable();
             adapter->Fill(dtMain);
             dtMain->Columns["id"]->ReadOnly = true; // deprecate id field edit to prevent exceptions
             dataGridView1->DataSource = dtMain;

			 }
					  ///
			private: System::Void Form1_FormClosed(System::Object^  sender, System::Windows::Forms::FormClosedEventArgs^  e) {

           if (adapter == nullptr) return;

             adapter->Update(dtMain);

		 }
};
}

  

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:重建二叉树_C++

下一篇:整数拆分问题_C++