Avatar billede radiv Nybegynder
07. januar 2005 - 13:03 Der er 4 kommentarer og
1 løsning

Typed dataset og MySQL.

Jeg har med stort held anvendt et typed dataset i forbindelse med en MSSQL forbindelse, og forsøger nu at gentage succesen med MySQL.

Det jeg ikke finder ud af, er en nem måde at generere .xsd-filen ud fra tabellerne i databasen. Med MSSQL er det blot at trække dem ind fra Server Explorer, højreklikke og vælge "generate dataset".

Men Connector/Net, som jeg bruger til min MySQL-forbindelse, kan jeg ikke finde i Server Explorer. Er det muligt at angive andre providere end OLE-DB i Server Explorer?

Hvordan kan man ellers generere et schema for datasettet?
Avatar billede radiv Nybegynder
10. januar 2005 - 10:00 #1
OK, jeg har genereret et dataset ud fra en
Avatar billede radiv Nybegynder
10. januar 2005 - 10:10 #2
OK, jeg har genereret et dataset ud fra en OLE DB Connection, men forbinder i koden med connector/net. Schemafilen bliver vel identisk uanset?

Problemet er nu at når jeg kalder Update på min MySqlDataAdapter får jeg denne fejl:
: System.InvalidOperationException: Connection must be valid and open
Avatar billede radiv Nybegynder
10. januar 2005 - 14:26 #3
Koden:

using System;
using System.Web.UI;
using MySql.Data.MySqlClient;
using System.Data;

namespace project
{
    public class DataPage : Page
    {
       
        protected string[] TableNames = {"nn", "nnn"};
               
        protected string ConnectionString = "Data Source=;Database=;User ID=;Password=;";
       
        protected dsTypedDataSet TypedDataSet;
       
        public DataPage()
        {
            this.Init += new System.EventHandler(this.HentData);
        }

        public void GetData(object o, EventArgs e)
        {
            if (Application["TypedDataset"] == null)
            {
                TypedDataSet = new dsTypedDataSet();
   
                foreach(string TableName in TableNames)
                {
                    MySqlDataAdapter Adapter = GetAdapter(TableName);                   
                    Adapter.Fill(TypedDataSet, TableName);
                }

                Application["TypedDataSet"] = TypedDataSet;
            }           
            else
                TypedDataSet = (DataSet)Application["TypedDataSet"];
        }
       
       
        public void UpdateData()
        {
            if (Application["TypedDataSet"] == null)
                GetData(null,null);

            foreach (string TableName in TableNames)
            {
                MySqlDataAdapter Adapter = GetAdapter(TableName);
       
                Adapter.Update(TypedDataSet, TableName);       
            }
        }

        public MySqlDataAdapter GetAdapter(string TableName)
        {
            if (Application["Adapter" + TableName] == null)
            {
                MySqlDataAdapter Adapter = new MySqlDataAdapter("SELECT * FROM " + TableName, ConnectionString);
               
                MySqlCommandBuilder cmdBuilder = new MySqlCommandBuilder(Adapter);
               
                Application["Adapter" + TableName] = Adapter;

            }
            return (MySqlDataAdapter) Application["Adapter" + TableName];
        }

    }
   
   
}

UpdateData kaldes fra en webform, og det går galt i Adapter.Update
Avatar billede radiv Nybegynder
17. januar 2005 - 20:47 #4
Lukker, men har nogen en løsning lytter jeg gerne!
Avatar billede radiv Nybegynder
26. januar 2005 - 10:08 #5
Jeg har lavet lidt om på koden, så jeg åbner en connection når jeg laver adapteren, og sender connection med i stedet for connectionstring. Så kører det, selv om jeg troede at adapteren selv sørget for forbindelse efter behov.
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