PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Zugriff von ASP.NET 2.0 auf MySQL Datenbank


Matrix316
2007-07-03, 19:15:46
Wie kann ich denn mit dem Visual Web Developer 2005 [mit C#] auf eine MySQL Datenbank zugreifen?

Ich hab hier zwar was schönes gefunden, aber anscheinend gilt das nur für .NET 1.1 :frown: http://www.stardeveloper.com/articles/display.html?article=2003052201&page=9

Gast
2007-07-03, 19:35:43
Entweder gibt es für MySql einen .NET Provider oder dann eben über Ole oder ODBC. Aber warum nicht die kostenlose Sql Server 2005 Express Edition? Ist doch eh besser als MySql.

Coda
2007-07-03, 19:39:39
Ist das evtl. was du suchst? http://dev.mysql.com/downloads/connector/net/5.1.html

Matrix316
2007-07-03, 20:41:35
Hmm, schon wieder ein Connector. ;) Aber ich probiers mal.

EDIT: Habs installiert, aber wenn ich using MySql.Data etc. mach, dann sagt er mir, dass er den Namespace nicht kennt. Muss ich noch irgendwie sonst was registrieren oder so?:confused:

Entweder gibt es für MySql einen .NET Provider oder dann eben über Ole oder ODBC. Aber warum nicht die kostenlose Sql Server 2005 Express Edition? Ist doch eh besser als MySql.
Eigentlich würde ich die gerne benutzen, aber bei 1und1 kann man (was ich bislang so gesehen habe) nur eine MySQL Datenbank benutzen. Und da ich eine Webseite die bei denen gehostet ist bearbeite bzw. ändern will...

Wobei ich gerade unter Vista probiere, und da lief der SQL Server Express 2005 irgendwie nicht richtig (es fehlte irgendwie ein Manager um Datenbanken bzw. Tabellen anzulegen).

Gast
2007-07-03, 21:11:05
Hmm, schon wieder ein Connector. ;) Aber ich probiers mal.

EDIT: Habs installiert, aber wenn ich using MySql.Data etc. mach, dann sagt er mir, dass er den Namespace nicht kennt. Muss ich noch irgendwie sonst was registrieren oder so?:confused:


Na einen Verweis auf die Assembly hinzufügen. Wenn du VS verwendest, dann im Projekt-Explorer auf Verweise->rechte Maustaste


Wobei ich gerade unter Vista probiere, und da lief der SQL Server Express 2005 irgendwie nicht richtig (es fehlte irgendwie ein Manager um Datenbanken bzw. Tabellen anzulegen).

Das kann sein, AFAIK gibt es da mehrere Versionen zum Download bzw. muss man sich das separat downloaden.

http://msdn.microsoft.com/vstudio/express/sql/download/

Matrix316
2007-07-03, 21:35:46
Jo, das mit dem Assembly wars. Allerdings funktioniert es noch nicht richtig. Komischerweise funktioniert im Web Developer das Debuggen nicht. Ich kann zwar Haltepunkte noch und nöcher setzen, aber die werden alle ignoriert...

Gast
2007-07-03, 21:52:09
Jo, das mit dem Assembly wars. Allerdings funktioniert es noch nicht richtig. Komischerweise funktioniert im Web Developer das Debuggen nicht. Ich kann zwar Haltepunkte noch und nöcher setzen, aber die werden alle ignoriert...

Dumme frage voraus: Hast du auch in VS in den Debug Build-Modus gewechselt?

Matrix316
2007-07-03, 22:24:32
Ist eigentlich aktiviert.

http://666kb.com/i/apr2u43hv917ejxqm.jpg

Gast
2007-07-03, 22:48:37
Und das ist erst seit dem du die MySql Assembly hinzugefügt hast oder schon zuvor so gewesen?

Gnafoo
2007-07-03, 23:07:11
Nur als Randnotiz: Also ich habe hier mit dem richtigen Visual Studio und obigem Connector/.NET keine Probleme. Funktioniert wunderbar mit dem MySQL-Server.

Läuft deine Webanwendung mit dem lokalen Webserver von Web Developer, oder auf einem IIS-Server? Beim IIS-Server brauchst du nämlich den Remote-Debugger auf dem Server.

Edit:

Wobei ich gerade unter Vista probiere, und da lief der SQL Server Express 2005 irgendwie nicht richtig (es fehlte irgendwie ein Manager um Datenbanken bzw. Tabellen anzulegen).

Afaik sind die netten Tools bei der Express-Edition nicht dabei und man muss alles mit dem Kommandozeilen-Tools machen.

Edit2:
Danke für den Hinweis @Gast. Da war ich wohl falsch informiert. Aber soweit ich das sehe ist das Management-Studio eben nicht direkt dabei, sondern muss zusätzlich heruntergeladen werden. Aber naja das ist ja kein Problem, wenn man es weiß X-D.
http://www.microsoft.com/downloads/details.aspx?FamilyID=c243a5ae-4bd1-4e3d-94b8-5a0f62bf7796&DisplayLang=de

Matrix316
2007-07-04, 00:29:23
Die Anwendung läuft auf dem internen Web Server des Visual Web Developers.

Hm, komisch, selbst das Kommandozeilen Tool war nicht dabei.

Gast
2007-07-04, 08:33:42
Afaik sind die netten Tools bei der Express-Edition nicht dabei und man muss alles mit dem Kommandozeilen-Tools machen.

Doch, das Management Studio ist mit dabei, nur eben nicht die ganzen anderen Tools. Steht ja auch auf der geposteten MS Seite als Download.

Matrix316
2007-07-06, 18:44:10
Nur als Randnotiz: Also ich habe hier mit dem richtigen Visual Studio und obigem Connector/.NET keine Probleme. Funktioniert wunderbar mit dem MySQL-Server.


Wie ist denn dein Zugriff? Vielleicht ist ja bei mir was falsch:

Web.Config

<connectionStrings>

<add name="MySQLConnectionString" connectionString="server=localhost;user id=root;Password=HALTDASPASSWORT;database=DATABASENAME" providerName="MySql.Data.MySqlClient" />

</connectionStrings>


Quellcode:


using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
//using System.Data.Odbc;
using MySql.Data.MySqlClient;

//in Klasse:

public DataSet GetReiseData()
{
string strCN = ConfigurationManager.AppSettings["MySQLConnectionString"];
MySqlConnection con = new MySqlConnection(strCN);
MySqlCommand cmd = new MySqlCommand();
MySqlDataAdapter myDataAdapter = new MySqlDataAdapter();

DataSet myds = new DataSet();
try
{
con.Open();
cmd.Connection = con;
myDataAdapter.SelectCommand = cmd;
cmd.CommandText = "SELECT * FROM Tabelle";

myDataAdapter.Fill(myds, "Tabelle");

}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine(ex.Message);
}
finally
{
con.Close();
}
return myds;

}

Gnafoo
2007-07-06, 21:21:02
Ich hoffe es hilft dir weiter ;). Sieht aber recht ähnlich aus.


<connectionStrings>
<add name="MySql" connectionString="Server=localhost;User Id=olaf;Password=testpw;Persist Security Info=True;Database=my_database;Max Pool Size=250" providerName="MySql.Data.MySqlClient" />
</connectionStrings>


Zugriff über ein strongly-typed Dataset, daher kann ich dir jetzt keinen brauchbaren Code dafür geben. Deiner sieht aber aus, als ob er funktionieren dürfte.

Edit: ich habe es mit deinem Code in einem neuen Konsolenprojekt probiert. Funktioniert hier:

using System;
using System.Collections.Generic;
using System.Text;
using MySql.Data.MySqlClient;
using System.Data;

namespace TestApp
{
class Program
{
static void Main(string[] args)
{
string strCN = Settings.Default.MySql;
MySqlConnection con = new MySqlConnection(strCN);
MySqlCommand cmd = new MySqlCommand();
MySqlDataAdapter myDataAdapter = new MySqlDataAdapter();

DataSet myds = new DataSet();
try
{
con.Open();
cmd.Connection = con;
myDataAdapter.SelectCommand = cmd;
cmd.CommandText = "SELECT * FROM user_logins";

myDataAdapter.Fill(myds, "Tabelle");
Console.WriteLine(myds.Tables["Tabelle"].Rows[0]["user_id"]);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
finally
{
con.Close();
}
Console.ReadKey();
}
}
}

Matrix316
2007-07-06, 23:36:04
Also der Code hat zumindest auf MSSQL Server 2000 funktioniert. Ich probiers dann mal aus. Leider funzt das Debuggen nicht mit dem Visual Web Developer, sonst könnte ich da das Problem nachvollziehen. Es gibt halt keinen Fehler, sondern ich bekomm nur nix zurück aus der Datenbank, obwohl da was drin steht.

Kann man eigentlich MySQL parallel zum MSSQL Server 2000 installieren, oder gibts da konflikte? Sonst könnte ich nämlich halt das auch unter Visual Studio 2005 testen, da dort das Debuggen funktioniert. Hört sich kompliziert an, aber im Moment ist es so installiert:

Windows XP:
-MSSql Server 2000
-Visual Studio 2005 Team Suite 180 Tage Trial

Windows Vista
-MySQL + Manager Software von EMS oder so
-Visual Web Developer 2005

EDIT: Die Zeile:

string strCN = Settings.Default.MySql;

gibt bei mir aber ein Fehler, da er Settings nicht kennt.

Gnafoo
2007-07-07, 00:30:30
Kann man eigentlich MySQL parallel zum MSSQL Server 2000 installieren, oder gibts da konflikte? Sonst könnte ich nämlich halt das auch unter Visual Studio 2005 testen, da dort das Debuggen funktioniert.
Ich habe beides zum Testen in einer virtuellen Maschine mit Windows Server installiert. Konflikte gab es da keine. Allerdings habe ich die Dienste vom Microsoft SQL-Server deaktiviert, d. h. es läuft zur Zeit nur einer der Server und nicht beide gleichzeitig.

EDIT: Die Zeile:

string strCN = Settings.Default.MySql;

gibt bei mir aber ein Fehler, da er Settings nicht kennt.
Das ist nicht weiter verwunderlich. In Visual Studio kann man bei einem Projekt (bei Webprojekten geht es glaube ich aber nicht) eine Anwendungskonfigurations-Datei hinzufügen und dort Einstellungswerte, Connection-Strings etc. in einer netten Tabelle eintragen. (Im Prinzip wie die Application Settings in Webprojekten.) Visual Studio erzeugt dann automatisch ein entsprechendes Object Settings.Default für den Zugriff auf eben jene Werte. Wie gesagt hab zum testen schnell ein Konsolenprojekt genommen und kein Webprojekt.

The_Invisible
2007-07-07, 00:31:07
sollte keine probleme geben da jede db auf einen anderen port horcht

mfg

Matrix316
2007-07-09, 11:11:13
Hab den Fehler gefunden:

Hier:
string strCN = ConfigurationManager.AppSettings["MySQLConnectionString"];

müsste es natürlich so heißen:

string strCN = ConfigurationManager.ConnectionStrings["MySQLConnectionString"].ToString();

:rolleyes:

Wobei das nicht erklärt, warum ich unter dem Visual Web Developer und Vista nicht Debuggen kann. :|

Matrix316
2007-07-10, 11:17:15
Also irgendwie lags an Vista. Unter WindowsXP-64 funktioniert das Debuggen.

PS.: Ein Hoch auf die Windows Systemwiederherstellung, denn nach dem Installieren von WindowsXP64 gabs beim alten Bluescreens vor dem Booten und auch eine Reparaturinstallation konnte es nicht wirklich beheben.

Gast
2007-09-06, 17:42:50
Super! Ich freue mich endlich ein Forum zu finden, indem Leute mit den gleichen Problem, wie ich es habe kämpfe.

Ich habe anhand eures Ansatzes versucht Daten aus meiner MySQL Datenbank abzurufen. Ich habe den obigen Quelltext ale Methode in meiner Datenzugriffsklasse eingefügt und die Methode an ein ObjectDataSource gebunden. Während der Laufzeit bekomme ich aber die Fehlermeldung:

Das DataSet in der Datenquelle "ObjectDataSource1" enthält keine Tabellen.

Kann mir vielleicht jemand sagen, was ich falsch mache?

Gruß,
Daniel

Matrix316
2007-09-07, 11:09:49
Ist denn die SQL Abfrage korrekt?