Avatar billede deicer Nybegynder
29. august 2007 - 21:18 Der er 10 kommentarer og
1 løsning

Visual C++ 2005 og SQL

Hej

Meget simpelt. Jeg skal lave en C++ application hvor der findes en "kør" knap og et output felt. Når der trykkes på "kør" skal der køres en SQL query imod en Access database. Resultatet skal vises i Output feltet.
For nemhedens skyld skal SQL blot returnerer alt (SELECT *)

C++ delen kan jeg nemt skabe, men jeg er usikker på SQL delen.

1. Hvordan griber jeg dette an?
2. Skal der åbnes via ODBC?
3. Hvordan skal query programkoden se ud i C++ koden?

På forhånd tak
Avatar billede arne_v Ekspert
29. august 2007 - 21:45 #1
Hvis det er native/unmanaged kode kan du bruge:
  ODBC
  MFC

Jeg har skrevet en artikel om hvordan man laver ODBC kald.

Hvis det er managed kode bruger du ADO.NET OLE DB provideren.

Det er uhyre nemt og jeg kan nemt lave et eksempel.
Avatar billede deicer Nybegynder
30. august 2007 - 16:24 #2
Hej Arne

Det må du meget gerne.

Min kode ser således ud:

".........
#pragma once


namespace SqlTest {

    using namespace System;
    using namespace System::ComponentModel;
    using namespace System::Collections;
    using namespace System::Windows::Forms;
    using namespace System::Data;
    using namespace System::Drawing;

    /// <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::Button^  button1;
    protected:
    private: System::Windows::Forms::Label^  label1;
    private: System::Windows::Forms::TextBox^  textBox1;

    private:
        /// <summary>
        /// Required designer variable.
        /// </summary>
        System::ComponentModel::Container ^components;

#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->label1 = (gcnew System::Windows::Forms::Label());
            this->textBox1 = (gcnew System::Windows::Forms::TextBox());
            this->SuspendLayout();
            //
            // button1
            //
            this->button1->Location = System::Drawing::Point(97, 29);
            this->button1->Name = L"button1";
            this->button1->Size = System::Drawing::Size(75, 23);
            this->button1->TabIndex = 0;
            this->button1->Text = L"KØR";
            this->button1->UseVisualStyleBackColor = true;
            this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click);
            //
            // label1
            //
            this->label1->AutoSize = true;
            this->label1->Location = System::Drawing::Point(42, 70);
            this->label1->Name = L"label1";
            this->label1->Size = System::Drawing::Size(210, 13);
            this->label1->TabIndex = 1;
            this->label1->Text = L"Tryk på KØR for at køre SQL forespørgslen";
            //
            // textBox1
            //
            this->textBox1->Location = System::Drawing::Point(39, 100);
            this->textBox1->Multiline = true;
            this->textBox1->Name = L"textBox1";
            this->textBox1->Size = System::Drawing::Size(213, 143);
            this->textBox1->TabIndex = 2;
            //
            // Form1
            //
            this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
            this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
            this->ClientSize = System::Drawing::Size(292, 266);
            this->Controls->Add(this->textBox1);
            this->Controls->Add(this->label1);
            this->Controls->Add(this->button1);
            this->Name = L"Form1";
            this->Text = L"Form1";
            this->ResumeLayout(false);
            this->PerformLayout();

        }
#pragma endregion
    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
            Query1->SQL->Add("SELECT Navn FROM tblProjekt WHERE FirmaID ='" + FirmaID + "'");   
            }
    };
}

........"

Det er som sagt når jeg Clicker på KØR at query'en skal køres.

Pft.
Avatar billede deicer Nybegynder
30. august 2007 - 18:35 #3
Den sidte linje ser naturligvis sådan her ud:


#pragma endregion
    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
           
            }
Avatar billede arne_v Ekspert
31. august 2007 - 05:46 #4
Simpelt eksempel:

#include "stdafx.h"

#using <mscorlib.dll>

using namespace System;
using namespace System::Data::SqlClient;

int main(array<System::String ^> ^args)
{
    SqlConnection^ con = gcnew SqlConnection("Server=ARNEPC3\\SQLEXPRESS;Integrated Security=SSPI;Database=Test");
    con->Open();
    SqlCommand^ cmd = gcnew SqlCommand(L"SELECT f1,f2 FROM t1", con);
    SqlDataReader^ rdr = cmd->ExecuteReader();
    while(rdr->Read()) {
        int f1 = rdr->GetInt32(0);
        String^ f2 = rdr->GetString(1);
        Console::WriteLine(f1 + " " + f2);
    }
    con->Close();
    return 0;
}
Avatar billede deicer Nybegynder
01. september 2007 - 17:17 #5
Hej Arne

Jeg kan ikke få det til at virke og har givet op. Du skal ikke snydes for points, så bare læg et svar.

C++ er vidst mere kompliceret end jeg regnede med :o)
Avatar billede arne_v Ekspert
01. september 2007 - 17:20 #6
C++ er det sværreste sprog jeg kender næstefter Ada.
Avatar billede arne_v Ekspert
01. september 2007 - 17:21 #7
Og et svar.
Avatar billede arne_v Ekspert
01. september 2007 - 17:21 #8
Hvis du vil give det et forsøg mere så skriv hvilke fejl du får og jeg kan forsøge at
hjælpe.
Avatar billede deicer Nybegynder
01. september 2007 - 17:42 #9
Hej Arne

Kan du anbefale et andet sporg som er nemmere at gå til? Det primære er at jeg skal udvikle en windows aplikation som skal lave forespørgseler i en Access database.

Pft.
Avatar billede arne_v Ekspert
01. september 2007 - 17:44 #10
Hvis du har Visual Studio, så vil jeg mene at både C# og VB.NET er betydeligt nemmere
at gå igang med end managed C++.

Og det er også betydeligt nemmere at finde eksempler på nettet.
Avatar billede deicer Nybegynder
01. september 2007 - 17:45 #11
Tak, jeg forsøger at starte med det.

Tak for hjælpen
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester