MySQL i .NET

Tags:    .net

Jeg var til foredrag med Michell Cronberg for at se om ikke jeg kunne få et skub til at komme i gang med c# og .NET.

Han havde et eksempel med hvor man gik via en kerne og ned i databasen i stedet for at tale direkte med db. Men det eksempel var i VB så vidt jeg husker.

Er der nogen der ligger inde med lidt kode i C# jeg kan få lidt inspiration af.

Det var et skide godt foredrag (hvis han nu lytter med).

Jeg kan sagtens få både microsoft.Data.Odbc og byteFX til at tale med min mySQL, men når jeg så vil splitte det op for at lægge SQL og lignende ned i en dll-fil, så går det galt.



Jeppe D.

--o--



6 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 1 karma
Sorter efter stemmer Sorter efter dato
Jeg smider lige de to koder:

Main.cs:
using System;
using mySQL;

namespace tutorial1_2
{
class MainClass
{
public static void Main(string[] args)
{
read.DataSet() = Class1.Equals;
while( read.Read() ) // vi henter fra databasen så længe der er noget at hente
{
Console.WriteLine("\\nId:: {0}, Omraade: {1}", read[0].ToString(), read[1].ToString()); // Vi udskriver nyhedens data (bemærk man henter fra databasen som i et array)
}
}
}
}



db_connect.dll:
using System;
using Microsoft.Data.Odbc; // vores komponent

namespace mySQL
{
class Class1
{
[STAThread]
public void GetAString()
// static void Main(string[] args)
{
string parametre;
OdbcConnection db;

parametre = "driver={mysql ODBC 3.51 driver};server=localhost;port=3306;database=falck;uid=root;"; // de parametre til forbindelsen, som vi skippede i ODBC opsætningen
db = new OdbcConnection(parametre);

db.Open();
Console.Write("FORBUNDET");

OdbcCommand cmd; // klassen OdbcCommand defineres til cmd
OdbcDataReader read; // klassen OdbcDataReader defineres til read

string sql = "SELECT * FROM omraader"; // her skriver vi vores kommando

cmd = new OdbcCommand(sql, db); // cmd defineres med sql strengen som første argument og hvilken database forbindelse der skal bruges som argument nr. 2
read = cmd.ExecuteReader(); // vi udfører kommandoen og modtager svaret
// while( read.Read() ) // vi henter fra databasen så længe der er noget at hente
// {
// Console.WriteLine("\\nId:: {0}, Omraade: {1}", read[0].ToString(), read[1].ToString()); // Vi udskriver nyhedens data (bemærk man henter fra databasen som i et array)
// }


db.Close();
}

}

}


Jeg vil bare have mine sql-ting over i en anden fil end main-filen.


Undskyld mig, men jeg synes din kode er lidt noget sludder:

read.DataSet() = Class1.Equals;

Det giver da ingen mening. Og prøv at gøre din klasse public ved at definere den med

public class Class1
{............

Mvh. Thomas Lykke Petersen



Jeg var til foredrag med Michell Cronberg for at se om ikke jeg kunne få et skub til at komme i gang med c# og .NET.

Han havde et eksempel med hvor man gik via en kerne og ned i databasen i stedet for at tale direkte med db. Men det eksempel var i VB så vidt jeg husker.

Er der nogen der ligger inde med lidt kode i C# jeg kan få lidt inspiration af.

Det var et skide godt foredrag (hvis han nu lytter med).

Jeg kan sagtens få både microsoft.Data.Odbc og byteFX til at tale med min mySQL, men når jeg så vil splitte det op for at lægge SQL og lignende ned i en dll-fil, så går det galt.



Jeppe D.

--o--


Hvilken type fejl får du?

Mvh. Thomas Lykke Petersen



Main.cs(18,11): error CS0122: 'mySQL.Class1' is inaccessible due to its protection level
Main.cs(20,51): error CS0103: The name 'read' does not exist in the class or namespace 'tutorial1_2.MainClass'
Main.cs(20,71): error CS0103: The name 'read' does not exist in the class or namespace 'tutorial1_2.MainClass'




Jeg smider lige de to koder:

Main.cs:
using System;
using mySQL;

namespace tutorial1_2
{
class MainClass
{
public static void Main(string[] args)
{
read.DataSet() = Class1.Equals;
while( read.Read() ) // vi henter fra databasen så længe der er noget at hente
{
Console.WriteLine("\\nId:: {0}, Omraade: {1}", read[0].ToString(), read[1].ToString()); // Vi udskriver nyhedens data (bemærk man henter fra databasen som i et array)
}
}
}
}



db_connect.dll:
using System;
using Microsoft.Data.Odbc; // vores komponent

namespace mySQL
{
class Class1
{
[STAThread]
public void GetAString()
// static void Main(string[] args)
{
string parametre;
OdbcConnection db;

parametre = "driver={mysql ODBC 3.51 driver};server=localhost;port=3306;database=falck;uid=root;"; // de parametre til forbindelsen, som vi skippede i ODBC opsætningen
db = new OdbcConnection(parametre);

db.Open();
Console.Write("FORBUNDET");

OdbcCommand cmd; // klassen OdbcCommand defineres til cmd
OdbcDataReader read; // klassen OdbcDataReader defineres til read

string sql = "SELECT * FROM omraader"; // her skriver vi vores kommando

cmd = new OdbcCommand(sql, db); // cmd defineres med sql strengen som første argument og hvilken database forbindelse der skal bruges som argument nr. 2
read = cmd.ExecuteReader(); // vi udfører kommandoen og modtager svaret
// while( read.Read() ) // vi henter fra databasen så længe der er noget at hente
// {
// Console.WriteLine("\\nId:: {0}, Omraade: {1}", read[0].ToString(), read[1].ToString()); // Vi udskriver nyhedens data (bemærk man henter fra databasen som i et array)
// }


db.Close();
}

}

}


Jeg vil bare have mine sql-ting over i en anden fil end main-filen.



Ja, det er lidt noget rod.

Men jeg er ikke så stiv i C#. Så derfor prøver jeg lidt af de ting den selv foreslår når man skriver noget.

Og det med equals kommer frem når jeg skriver mySQL.Class1.

Der kunne jeg jo godt tænke mig at kunne vælge Read fra db_connect.dll som skulle indeholde resultatet fra min SQL-sætning og så arbejde videre på det. Men er det så noget med DataSet?



Ja, det er lidt noget rod.

Men jeg er ikke så stiv i C#. Så derfor prøver jeg lidt af de ting den selv foreslår når man skriver noget.

Og det med equals kommer frem når jeg skriver mySQL.Class1.

Der kunne jeg jo godt tænke mig at kunne vælge Read fra db_connect.dll som skulle indeholde resultatet fra min SQL-sætning og så arbejde videre på det. Men er det så noget med DataSet?


Et DataSet er et objekt som kan holde en disconnected version af dine data.

Så du kan gøre det at du har en funktion som læser data ind i et dataset også returnerer dit dataset.

Mvh. Thomas Lykke Petersen



t