Databinding
Database
MSQL
Børre Stenseth
Moduler>Databaser>Vinbase2

Finne vin

Hva
Image1
Databinding, database, navigasjon

Denne modulen beskriver en applikasjon som funksjonelt er svært lik den som er beskrevet i modulen Vinbase. Forskjellen er at her lager vi en databasekopling og binder oss mot denne direkte.

Vi bruker MSQL-versjonen av databasen. Selve databssen er enkel og består av en tabell, wines. Denne er dokumentert i modulen Noen datasett.

Løsningen er basert på at vi lager en databasekopling mot en database på donau.hiof.no der vi velger ut tabellen wines. Vi kopler denne opp til en bindingnavigator, og sitter til slutt med følgende objekter: "bindingNavigator1", "bindingSource1", "borresDataSet", "wineTabeadapter". Vi går inn i den siste og lager en query: SelectSome med følgende SQL-setning:

SELECT vin_id, name, catalog, type, country, dice, volume, price, description 
FROM db_owner.wines 
WHERE (country=@land) and (type=@type)
	     order by dice desc
	

Denne gir opphav til en metode som vi kan bruke når vi henter ønskede data:

this.winesTableAdapter1.SelectSome(this.borresDataSet.wines, land, type);
	

Form1.cs

Koden er slik:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace inspectwine
{
    public partial class Form1 : Form
    {
        // initalizing correctly
        bool SelectedLand = false;
        bool SelectedType = false;
        public Form1()
        {
            InitializeComponent();
        }
      
        private void comboBoxLand_SelectedIndexChanged(object sender, EventArgs e)
        {
            SelectedLand = true;
            if (SelectedType)
                Load();
        }
        private void comboBoxType_SelectedIndexChanged(object sender, EventArgs e)
        {
            SelectedType = true;
            if (SelectedLand)
                Load();
        }
        private void Load()
        {
            String land = comboBoxLand.SelectedItem.ToString();
            String type = comboBoxType.SelectedItem.ToString();            
            textBoxUtvalg.Text = type + " fra " + land;
            if (type.IndexOf("Rød") != -1)
                type = "red";
            else if (type.IndexOf("Hvit") != -1)
                type = "white";
            else if (type.IndexOf("Muss") != -1)
                type = "sparkling";
            else
                type = "rose";
            
            try
            {
                this.newwinesTableAdapter.FillBy(this.borresDataSet.newwines,land,type);                
            }
            catch (System.Exception ex)
            {
                System.Windows.Forms.MessageBox.Show(ex.Message);
            }

        }
        private void bindingSource1_CurrentChanged(object sender, EventArgs e)
        {
            try
            {
                System.Data.DataRowView cur = 
                    (System.Data.DataRowView)bindingSource1.Current;
                Object[] ol = cur.Row.ItemArray;
                textBoxNavn.Text = ol[1].ToString();
                labelterning.Text = ol[5].ToString();
                textBoxVolum.Text = ol[6].ToString();
                textBoxPris.Text = ol[7].ToString();
                textBoxBeskrivelse.Text = ol[8].ToString();
            }
            catch (Exception ex)
            {
                textBoxNavn.Text = "Ingen";
                labelterning.Text = "";
                textBoxVolum.Text = "";
                textBoxPris.Text = "";
                textBoxBeskrivelse.Text = "";
            }
        }

     }
}

app.config

I app.config finner vi beskrivelse av hvordan vi kopler oss mot databasen. Vi gjør det via en bruker student med passord student. Basen heter bs. Student har bare leserettigheter.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
    </configSections>
    <connectionStrings>
        <add name="inspectwine.Properties.Settings.borresConnectionString"
            connectionString="Data Source=donau.hiof.no;Initial Catalog=bs;User ID=student;Password=student"
            providerName="System.Data.SqlClient" />
    </connectionStrings>
</configuration>
Referanser
  • Prosjekt:
    https://svn.hiof.no/svn/psource/Csharpspikes/winebase2
  • Modulen Enkel database beskriver detaljert oppsettet av en databasekopling.
  • Modulen Vinbase beskriver hvordan tilnærmet samme problem løses med en ODBC kopling og eksplistt koding mot databasen.
Vedlikehold

B.Stenseth, mars 2007

(Velkommen) Moduler>Databaser>Vinbase2 (Vinbase3)