• C++: read SQL server data using System::Data::SqlClient


    stdafx.h:

    // stdafx.h : include file for standard system include files,
    // or project specific include files that are used frequently, but
    // are changed infrequently
    #pragma once
    #using <mscorlib.dll>
    #using <System.dll>
    #using <System.Data.dll>
    #using <System.Xml.dll>
    // TODO: reference additional headers your program requires here
    

      Form1.h

    #pragma once
    
    
    namespace SQLServer2008R2inCCLI {
    
    	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::Configuration;
        using namespace ADODB;//c:Program FilesCommon FilesSystemADOmsado15.dll
    
    	using namespace System::Data::SqlClient;
    
    	/// <summary>
    	/// Summary for Form1
    	///
    	/// WARNING: If you change the name of this class, you will need to change the
    	///          'Resource File Name' property for the managed resource compiler tool
    	///          associated with all .resx files this class depends on.  Otherwise,
    	///          the designers will not be able to interact properly with localized
    	///          resources associated with this form.
    	/// </summary>
    	public ref class Form1 : public System::Windows::Forms::Form
    	{
    	public:
    		Form1(void)
    		{
    			InitializeComponent();
    			//
    			//TODO: Add the constructor code here
    			//
    		}
    
    	protected:
    		/// <summary>
    		/// Clean up any resources being used.
    		/// </summary>
    		~Form1()
    		{
    			if (components)
    			{
    				delete components;
    			}
    		}
    	        private: System::Windows::Forms::DataGridView^ dataGridView1;
            private: System::Windows::Forms::Label^ label1;
            private: System::Windows::Forms::ComboBox^ comboBoxTables;
            private: System::Windows::Forms::Button^ buttonOK;
            private: System::Windows::Forms::ToolTip^ toolTip1;
    	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->components = (gcnew System::ComponentModel::Container());
    			this->dataGridView1 = (gcnew System::Windows::Forms::DataGridView());
    			this->label1 = (gcnew System::Windows::Forms::Label());
    			this->comboBoxTables = (gcnew System::Windows::Forms::ComboBox());
    			this->buttonOK = (gcnew System::Windows::Forms::Button());
    			this->toolTip1 = (gcnew System::Windows::Forms::ToolTip(this->components));
    			(cli::safe_cast<System::ComponentModel::ISupportInitialize^  >(this->dataGridView1))->BeginInit();
    			this->SuspendLayout();
    			// 
    			// dataGridView1
    			// 
    			this->dataGridView1->Anchor = static_cast<System::Windows::Forms::AnchorStyles>((((System::Windows::Forms::AnchorStyles::Top | System::Windows::Forms::AnchorStyles::Bottom) 
    				| System::Windows::Forms::AnchorStyles::Left) 
    				| System::Windows::Forms::AnchorStyles::Right));
    			this->dataGridView1->ColumnHeadersHeightSizeMode = System::Windows::Forms::DataGridViewColumnHeadersHeightSizeMode::AutoSize;
    			this->dataGridView1->Location = System::Drawing::Point(12, 44);
    			this->dataGridView1->Name = L"dataGridView1";
    			this->dataGridView1->ShowCellToolTips = false;
    			this->dataGridView1->Size = System::Drawing::Size(493, 266);
    			this->dataGridView1->TabIndex = 0;
    			this->dataGridView1->MouseDown += gcnew System::Windows::Forms::MouseEventHandler(this, &Form1::dataGridView1_MouseDown);
    			this->dataGridView1->DataError += gcnew System::Windows::Forms::DataGridViewDataErrorEventHandler(this, &Form1::dataGridView1_DataError);
    			// 
    			// label1
    			// 
    			this->label1->Location = System::Drawing::Point(12, 9);
    			this->label1->Name = L"label1";
    			this->label1->Size = System::Drawing::Size(65, 32);
    			this->label1->TabIndex = 1;
    			this->label1->Text = L"Select table to show:";
    			// 
    			// comboBoxTables
    			// 
    			this->comboBoxTables->DropDownStyle = System::Windows::Forms::ComboBoxStyle::DropDownList;
    			this->comboBoxTables->FormattingEnabled = true;
    			this->comboBoxTables->Location = System::Drawing::Point(83, 12);
    			this->comboBoxTables->Name = L"comboBoxTables";
    			this->comboBoxTables->Size = System::Drawing::Size(165, 21);
    			this->comboBoxTables->TabIndex = 2;
    			// 
    			// buttonOK
    			// 
    			this->buttonOK->Location = System::Drawing::Point(254, 12);
    			this->buttonOK->Name = L"buttonOK";
    			this->buttonOK->Size = System::Drawing::Size(56, 21);
    			this->buttonOK->TabIndex = 3;
    			this->buttonOK->Text = L"OK";
    			this->buttonOK->UseVisualStyleBackColor = true;
    			this->buttonOK->Click += gcnew System::EventHandler(this, &Form1::buttonOK_Click);
    			// 
    			// toolTip1
    			// 
    			this->toolTip1->AutoPopDelay = 5000;
    			this->toolTip1->InitialDelay = 0;
    			this->toolTip1->IsBalloon = true;
    			this->toolTip1->ReshowDelay = 0;
    			this->toolTip1->ToolTipIcon = System::Windows::Forms::ToolTipIcon::Warning;
    			this->toolTip1->UseAnimation = false;
    			this->toolTip1->UseFading = false;
    			// 
    			// Form1
    			// 
    			this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
    			this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
    			this->ClientSize = System::Drawing::Size(517, 322);
    			this->Controls->Add(this->buttonOK);
    			this->Controls->Add(this->comboBoxTables);
    			this->Controls->Add(this->label1);
    			this->Controls->Add(this->dataGridView1);
    			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);
    
    		}
    #pragma endregion
    		String ^ServerName, ^DBName;
    
            SqlConnection ^conn;
            SqlDataAdapter ^adapter;
            DataTable ^dtMain;
    
    	private: System::Void Form1_Load(System::Object^  sender, System::EventArgs^  e) {
    				 ServerName = "GEOVINDU-PC\GEOVIN";
                	 DBName = "DuVehicle";
    
    
    
                	 // create database if not exists
                	 //try {
    					// ADODB::Connection="";//c:Program FilesCommon FilesSystemADOmsado15.dll
    
    					             	 // connect to server
                	 // to database "master" to check if our database exists
                	 // to create it if it isn't exists
                	 //conn = gcnew SqlConnection("Server=" + ServerName + ";Database=DuVehicle;UID=sa;PWD=geovindu;");
                	 //conn->Open();
    					 //SqlCommand ^cmd = gcnew SqlCommand(String::Format("CREATE DATABASE [{0}] ON (" +
          //                                              "    NAME = {0}, " +
    						//							"    FILENAME = '" + Application::StartupPath + "\{0}.mdf'" +
          //                                              ");",
          //                                              DBName), conn);
          //               cmd->ExecuteNonQuery();
    					 //delete cmd;
                	/* }
                	 catch (Exception ^ex) { }*/
    
    
                	 // create table "Table 1" if not exists
    				 //SqlCommand ^cmd = gcnew SqlCommand(String::Format(
         //                                 "IF NOT EXISTS (" +
         //                                 "    SELECT [name] " +
         //                                 "    FROM sys.tables " +
         //                                 "    WHERE [name] = '{0}'" +
         //                                 ") " +
         //                                 "CREATE TABLE [{0}] (" +
         //                                 "    id [INT] IDENTITY(1,1) PRIMARY KEY CLUSTERED, " +
         //                                 "    [text column] [TEXT] NULL, " +
         //                                 "    [int column] [INT] NULL " +
         //                                 ")",
         //                                 "Table 1"), conn);
         //       	 cmd->ExecuteNonQuery();
    				 //delete cmd;
                	 conn = gcnew SqlConnection("Server=" + ServerName + ";Database=DuVehicle;UID=sa;PWD=geovindu;");
                	 conn->Open();
                	 // 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() == "BASE TABLE") {
    						comboBoxTables->Items->Add(dt->Rows[i]->ItemArray[dt->Columns->IndexOf("TABLE_NAME")]->ToString());
    					}
                     }
    				 delete dt;
    			 }
    private: System::Void buttonOK_Click(System::Object^  sender, System::EventArgs^  e) {
    			 if (comboBoxTables->SelectedItem == nullptr) return;
    
                 adapter = gcnew SqlDataAdapter("SELECT * FROM [" + comboBoxTables->SelectedItem->ToString() + "]", conn);
    
                 gcnew SqlCommandBuilder(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);
    		 }
    		 // show tooltip (not intrusive MessageBox) when user trying to input letters into INT column cell
    private: System::Void dataGridView1_DataError(System::Object^  sender, System::Windows::Forms::DataGridViewDataErrorEventArgs^  e) {
    			 if (dtMain->Columns[e->ColumnIndex]->DataType == Int64::typeid ||
    				 dtMain->Columns[e->ColumnIndex]->DataType == Int32::typeid ||
    				dtMain->Columns[e->ColumnIndex]->DataType == Int16::typeid)
                {
                    Rectangle ^rectColumn;
                    rectColumn = dataGridView1->GetColumnDisplayRectangle(e->ColumnIndex, false);
    
                    Rectangle ^rectRow;
                    rectRow = dataGridView1->GetRowDisplayRectangle(e->RowIndex, false);
    
                    toolTip1->ToolTipTitle = "This field is for numbers only.";
                    toolTip1->Show(" ",
                              dataGridView1,
                              rectColumn->Left, rectRow->Top + rectRow->Height);
    
    				delete rectColumn;
    				delete rectRow;
                }
    		 }
    private: System::Void dataGridView1_MouseDown(System::Object^  sender, System::Windows::Forms::MouseEventArgs^  e) {
    			 toolTip1->Hide(dataGridView1);
    		 }
    };
    }
    

      

  • 相关阅读:
    Web大规模高并发请求和抢购的解决方案
    常用的排序算法
    Kafka中的消息是否会丢失和重复消费(转)
    excel操作之poi-ooxml
    spring-boot-configuration-processor 是干啥用的
    递归和尾递归的区别和原理(转)
    kafka接口文档和kafka教程
    quartz (从原理到应用)详解篇(转)
    Elastic-Job开发指南(转)
    SimpleDateFormat线程不安全及解决办法(转)
  • 原文地址:https://www.cnblogs.com/geovindu/p/5745181.html
Copyright © 2020-2023  润新知