Finne vin
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.