Hallo,
ich moechte von meinen C# Programm aus eine MySql-DB auslesen und Daten schreiben, ich habe schon im Internet und im Forum sehr viel gefunden und jetzt habe ich die Quwahl der Wahl, welche Methode soll ich nehmen.
Ich habe nur zwei Kritieren an die Methoden
Ich hoffe, dass mir jemand helfen kann.
MfG
stift
Oledb?
Odbc?
--> Bitte im richtigen Forum posten! Verschoben nach Datentechnologien.
--> Bitte im richtigen Forum posten! Verschoben nach Datentechnologien.
Sorry, ich habe es mir schon fast gedacht
Oledb?
Odbc?
????
Hallo Stift!
Also zur Erklärung:
OleDb und ODBC sind zwei "Treiber" für Datenbanken. Treiber ist zwar vielleicht das falsche Wort, aber eventuell verständlicher.
Während ODBC erst in Windows installiert werden muss, kann man mit Hilfe von OleDb direkt aus dem .NET Framework die Datenbank ansprechen.
Hierzu solltest du unbedingt in die Hilfe schauen. Unter System.Data.OleDb findest Dur eine Reihe von Datenbanken, die Du damit ansprechen kannst.
Wenn Du Dir das angeschaut hast, kannst Du vielleicht nochmal konkretere Fragen stellen, denn die Anwendung von OleDb ist nicht allzu schwierig.
Ciao
Norman-Timo
A: “Wie ist denn das Wetter bei euch?”
B: “Caps Lock.”
A: “Hä?”
B: “Na ja, Shift ohne Ende!”
also waere fuer mich oledb guenstiger, wenn ich auf eine MySql-DB zugreifen will.
Gibt es gute und einfache OleDb-Anelitungen?
Ja, die SDK Doku. Da findest Du Beispiele.
Stichworte:
System.Data.OleDb.OleDbConnection
System.Data.OleDb.OleDbCommand
System.Data.OleDb.OleDbDataAdapter
System.Data.DataSet
Hier findest Du ConnectionStrings: http://www.connectionstrings.com/.
Um mit OleDb auf die MySql Db zugreifen zu können, muss erst der
MySql-OleDb Treiber installiert werden.
Von .NET ist es einfacher mit dem MySql Connector.NET, den
es direkt bei MySql gibt.
Im Handbuch zu MySql ist die Benutzung im Kapitel 24.2 erklärt.
Wer richtig sucht, der findet.
Sorry.
Eine andere frage der connector funktioniert bei mir bereits, aber wenn ich mich das erstemal mit dem Server verbinden will kommt die Meldung "Connection unexpectedly terminated" und wenn ich gleich danach mich nochmal verbinden will funktioniert es ohne Probleme.
Kenn jemand die Ursache dafuer?
Hallo Stift!
Ich würde blind tippen, dass es am Netzwerk liegt. Befinden sich DB und Dein .NET Programm auf einem Rechner? Dann könnte ich es mir allerdings nicht erklären.
Wenn dem aber nicht so ist, dann könnte es an einem Timeout liegen. Ich meine, dass es möglich sein kann, dass der Server nicht schnell genug antwortet. Beim zweiten mal, waren aber schon mal Anfragen da, und der Server antwortet Netzwerkbedingt dann automatisch schneller (Er muss kein Arp etc machen).
Was für eine Netzwerkverbindung hast Du denn (Router, Switches und Leitungsgeschwindigkeit) ?
Ciao
Norman-Timo
A: “Wie ist denn das Wetter bei euch?”
B: “Caps Lock.”
A: “Hä?”
B: “Na ja, Shift ohne Ende!”
wie lautet eigentlich die Befehls reihenfolge zum einfuegen eines datensatzes in die DB.
connet
?
?
?
MySqlCommand("INSERT INTO t_table (feld) VALUES ('wert')");
?
?
?
close();
WEDER OLEDB NOCH ODBC!!!
Finger weg davon! Es gibt doch extra einen .NET Datenbanktreiber von MySQL!
Runterladen (www.mysql.com) und installieren. Schon hat man die Xtra aus MySQL angepassten Klassen.
Ich bin vielleicht blöde:
"Erst lesen, dann schreiben"...
Oledb?
Odbc?--> Bitte im richtigen Forum posten! Verschoben nach Datentechnologien.
Hallo,
wann gibt es denn Connector fuer Framework 2.0.
Ich nutze 2.0 und wenn der 1.0 Connector den Server nicht findet schmiert das ganze Programm ab, oder hat das andere Ursachen?
Ein Programm das abschmiert ist immer schlecht geschrieben.
Hast Du Try/Catch um die DB-Aktionen?
Was meinst Du überhaipt mit abschmieren?
ja, habe ich. Unter Framework 1.1 schmiert das/der (programm)teil bei gleichen bediengungen nicht ab.
See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.
\************** Exception Text **************
System.Net.Sockets.SocketException: Eine Anforderung zum Senden oder Empfangen von Daten wurde verhindert, da der Socket nicht verbunden ist und (beim Senden über einen Datagrammsocket mit einem sendto-Aufruf) keine Adresse angegeben wurde
at System.Net.Sockets.Socket.Shutdown(SocketShutdown how)
at MySql.Data.Common.SocketStream.Read(Byte[] buffer, Int32 offset, Int32 count)
at System.IO.BufferedStream.ReadByte()
at MySql.Data.MySqlClient.PacketReader.ReadHeader()
at MySql.Data.MySqlClient.PacketReader.OpenPacket()
at MySql.Data.MySqlClient.NativeDriver.Open()
at MySql.Data.MySqlClient.Driver.Create(MySqlConnectionString settings)
at MySql.Data.MySqlClient.MySqlConnection.Open()
at TUS.fun_db.mysqlconnect()
at TUS.Form_Main.btn_cheupd_Click(Object sender, EventArgs e)
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ButtonBase.WndProc(Message& m)
at System.Windows.Forms.Button.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
\************** Loaded Assemblies **************
mscorlib
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.42 (RTM.050727-4200)
CodeBase: file:///C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
----------------------------------------
System.Windows.Forms
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.42 (RTM.050727-4200)
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.42 (RTM.050727-4200)
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Drawing
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.42 (RTM.050727-4200)
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System.Configuration
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.42 (RTM.050727-4200)
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Configuration/2.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
----------------------------------------
System.Xml
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.42 (RTM.050727-4200)
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Xml/2.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
MySql.Data
Assembly Version: 1.0.6.36337
Win32 Version: 1.0.6.36337
CodeBase: file:///C:/Programme/test/MySql.Data.DLL
----------------------------------------
System.Data
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.42 (RTM.050727-4200)
CodeBase: file:///C:/WINDOWS/assembly/GAC_32/System.Data/2.0.0.0__b77a5c561934e089/System.Data.dll
----------------------------------------
\************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.
For example:
<configuration>
<system.windows.forms jitDebugging="true" />
</configuration>
When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.
Und das lässt sich nicht durch Try/Catch um die Verbindungsanforderung abfangen?
try
{
conn = new MySqlConnection(connStr);
conn.Open();
select();
}
catch(MySqlException ex)
{
MessageBox.Show(ex.Message);
}
Wenn Du Dir die Fehlermeldung ansiehst, wirst Du feststellen,
das eine SocketException geworfen wird.
Die fängst Du aber nicht ab.
Du solltest bei MySql aus verschiedenen Gründen nicht nur MySqlExceptions
sondern allgemeine Exceptions abfangen.
Kannst Du ja auch zusätzlich machen.
try
{
conn = new MySqlConnection(connStr);
conn.Open();
select();
}
catch(MySqlException mysqlex)
{
MessageBox.Show(mysqlex.Message);
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
if( conn != null )
conn.Close();
}
Es gibt den Connector 1.0.7 für MySQL, der auch .NET 2.0 unterstützt, Hast du dort immer noch probleme?