Databinding
ODBC
Database
MySQL
Børre Stenseth
Moduler>Databaser>Vinbase3

Finne vin

Hva
screen
Databinding, database, navigasjon

Denne modulen bruker den samme MySql-databasen som Vinbase, men vi setter opp en datakilde og kopler oss opp med et BindingSource objekt som henter data direkte fra basen.

Den første utfordringen er å sette opp en kopling mot MySql-basen. Dette får vi til ved å velge ny datakopling og endre provider til ODBC/MySql.

Den andre utfordringen er å lage en metode som implementerer en parameterstyrt, sql-basert metode. Dette viser seg å være litt problematisk (?). I stedet bruker jeg en filterstring i BindingSource, se koden nedenfor.

Form1.cs

Denne klassen inneholder all håndkodet kode og ser slik:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace winebase3
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            this.dataTableTableAdapter1.Fill(this.vinDataSet.DataTable);
        }
        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                this.bindingSource1.Filter = textBox1.Text;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
    }
}

Connection stringen lagres i applikasjonens configureringsfil, app.config.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
    </configSections>
    <connectionStrings>
        <add name="winebase3.Properties.Settings.vinConnectionString"
            connectionString="Driver={MySQL ODBC 3.51 Driver};database=vin;option=0;pwd=student;port=0;server=frigg.hiof.no;uid=student"
            providerName="System.Data.Odbc" />
    </connectionStrings>
</configuration>

Det er også mulig lage og lagre følgende dsn-fil (myfriggvin.dsn), og hente den direkte og derved korslutte den litt grumsete dialog som må til for å sette opp datakoplingen:

	[ODBC]
	DRIVER=MySQL ODBC 3.51 Driver
	UID=student
	SERVER=frigg.hiof.no
	PORT=0
	OPTION=3
	DATABASE=vin
	

Vi ser at dette i prinsipp er det samme som en connectionstring vi ville ha skrevet i koden, dersom vi ikke var ute etter en (halv)automatisk kopling.

Referanser
  • Prosjekt:
    https://svn.hiof.no/svn/psource/Csharpspikes/winebase3
Vedlikehold

B.Stenseth, februar 2011

(Velkommen) Moduler>Databaser>Vinbase3 (Assemblies)