#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); }
};
}

  

C++: read access data using ADOX.DLL and System::Data::OleDb的更多相关文章

  1. 报错:无法将类型"System.Data.EntityState"隐式转换为"System.Data.Entity.EntityState"

    报错:无法将类型"System.Data.EntityState"隐式转换为"System.Data.Entity.EntityState".   出错语句停留 ...

  2. MVC ---- 无法将类型"System.Data.EntityState"隐式转换为"System.Data.Entity.EntityState"

    1.EF 5.0解决方法 先卸载EF:Uninstall-Package EntityFramework -Force 在安装EF5.0:Install-Package EntityFramework ...

  3. 『开源重编译』System.Data.SQLite.dll 自适应 x86 x64 AnyCPU 重编译

    背景: > System.Data.SQLite.dll 程序集 不能良好的支持 AngCPU 格式 System.Data.SQLite.dll 在 适应 x86 和 x64 有三个方案: & ...

  4. C++: read SQL server data using System::Data::SqlClient

    stdafx.h: // stdafx.h : include file for standard system include files, // or project specific inclu ...

  5. 在使用EFCodeFirst中出现类型“System.Data.Objects.ObjectContext”在未被引用的程序集中定义的解决方案

    我安装了EF4.1版本,并在一个项目中映射一个数据库并生成了EF的MODEL实体层 测试:在Default.aspx页面上加了个GridView控件,后台进行绑定 using System; usin ...

  6. System.Data.SQLite安装的相关问题

    在使用System.Data.SQLite的过程中,遇到各种问题,特此记录下.(都被搞的折寿了,不仔细看文档的下场!) 1.选对.net Framework的版本. 2.X64和X86的问题,如果项目 ...

  7. .net引用System.Data.SQLite操作SQLite

    之所以要做这个笔记,是因为在.NET中使用System.Data.SQLite的时候,遇到了些问题,这些问题是相对于引用其他dll没有遇到过的,所以作个笔记,记录一下. 简单起见,首先建立一个控制台项 ...

  8. 【WinForm】“System.Data.SqlClient.SqlConnection”的类型初始值设定项引发异常,无法识别的配置节 system.serviceModel

    出现问题的原因: 在本机上没有出现问题,让一个同事测试的时候,在另外一台电脑上出现连接数据库失败,系统不能打开的问题 在网上搜了一下,有说是数据库连接字符串错误的,有说app.config文件配置不匹 ...

  9. 使用EF6.0出现:CS0029 无法将类型“System.Data.Entity.Core.Objects.ObjectContext”隐式转换为“System.Data.Objects.ObjectContext”错误

    这是因为EF6.0重构了一些命名空间后,和VS原有的实体数据模型模板不一致了(ObjectContext context = ((IObjectContextAdapter)dataContext). ...

随机推荐

  1. vue初体验:实现一个增删查改成绩单

    前端变化层出不穷,去年NG火一片,今年react,vue火一片,ng硬着头皮看了几套教程,总被其中的概念绕晕,react是faceback出品,正在不断学习中,同时抽时间了解了vue,查看了vue官方 ...

  2. MyBatis学习总结(七)——Mybatis缓存

    一.MyBatis缓存介绍 正如大多数持久层框架一样,MyBatis 同样提供了一级缓存和二级缓存的支持 一级缓存: 基于PerpetualCache 的 HashMap本地缓存,其存储作用域为 Se ...

  3. 更新日志 - fir.im Jenkins & Gradle 插件上线

    最近 fir.im 工程师们效率爆表,fir.im 实用工具集合又添加了新的成员-- Jenkins & Gradle 插件,让 App 打包上传更加简单快速. fir.im Jenkins ...

  4. 下列哪项不属于jdk1.6垃圾收集器?

    下列哪项不属于jdk1.6垃圾收集器? A.  Serail 收集器 B.  parNew 收集器 C.  CMS 收集器 D.  G1 收集器 答案:D 解:Java垃圾收集器发展路径下图所示: 其 ...

  5. java中paint方法和paintComponent方法的不同

    /* 1.由Component.java源代码中可以看见其中的paint()方法体是空的,在Container中重写了该方法,其子类Window等也重写了该方法 2.由JComponent.java源 ...

  6. Zookeeper-Zookeeper启动过程

    在上一篇,我们了解了zookeeper最基本的配置,也从中了解一些配置的作用,那么这篇文章中,我们将介绍Zookeeper的启动过程,我们在了解启动过程的时候还要回过头看看上一篇中各个配置参数在启动时 ...

  7. 如何用Python寻找重复文件并删除

    在实际生活中,经常会有文件重复的困扰,即同一个文件可能既在A目录中,又在B目录中,更可恶的是,即便是同一个文件,文件名可能还不一样.在文件较少的情况下,该类情况还比较容易处理,最不济就是one by ...

  8. PHP的学习--生成器Generators

    生成器总览 (PHP 5 >= 5.5.0, PHP 7) 生成器提供了一种更容易的方法来实现简单的对象迭代,相比较定义类实现 Iterator 接口的方式,性能开销和复杂性大大降低. 生成器允 ...

  9. Linq(一)

    Linq是c#设计者们在c#3.0中新添加的语法:查询表达式.使用查询表达式,很多标准查询操作符都能转化成更容易理解的代码,也就是和SQL风格非常接近的代码. 在介绍Linq之前,先介绍下泛型集合IE ...

  10. 【Spring】Spring AOP实现原理

    Spring AOP实现原理 在之前的一文中介绍过Spring AOP的功能使用,但是没有深究AOP的实现原理,今天正好看到几篇好文,于是就自己整理了一下AOP实现的几种方式,同时把代理模式相关知识也 ...