28. januar 2004 - 16:44Der er
16 kommentarer og 2 løsninger
MySQL og ASP.NET
Jeg kæmper en lidt, ok meget, med at få asp.net til at connecte til en MySQL database. Jeg har installeret myodbc-3.51 og odbc_net.msi. Jeg har oprettet en test-db i mysql, og oprettet en DNS (ved navn test)
Er der en der kan komme med et kodeeksempel? (helst VB.NET)
Jeg har lavet denne klasse som jeg bruger med ByteFX:
using System; using System.Collections; using System.Data; using System.Data.Common; using System.Data.Odbc; using System.Threading; using ByteFX.Data.MySqlClient;
namespace vlife { public class Database { private static ArrayList conList = new ArrayList();
public static void Initialize(int amount, string strCon) { for (int i = 0; i < amount; i++) { conList.Add(new MySqlConnection(strCon)); } }
public static MySqlConnection GetConnection() { lock (conList) { int sleepTimes = 0; MySqlConnection con = (MySqlConnection)conList[0]; while (con.State != System.Data.ConnectionState.Open) { if (con.State == System.Data.ConnectionState.Closed) { con.Open(); } if (con.State == System.Data.ConnectionState.Broken) { con.Close(); con.Open(); } if (sleepTimes > 10) { return null; } else { Thread.Sleep(500); sleepTimes++; } } conList.RemoveAt(0); conList.Add(con); return con; } }
public static void Close() { foreach(MySqlConnection con in conList) { con.Close(); } }
public static void Open(MySqlConnection con) { try { if (con.State == System.Data.ConnectionState.Open) { return; } } catch (NullReferenceException) { } DBInfo info = new DBInfo(); string strCon = "DATABASE="+info.Database+";Driver=mysql;SERVER="+info.Server+";UID="+info.Userid+";PWD="+info.Password+";"; con = new MySqlConnection(strCon); con.Open(); } } }
Hov, den hænger sguda ikke sammen :) Det er en hybrid mellem to versioner jeg kom til at paste der. Sorry - men den virker helt fint alligevel. Jeg bruger disse 2 metoder til at tilgå den:
private int Update(string sql) { con = Database.GetConnection(); cmd = new MySqlCommand(sql, con); return cmd.ExecuteNonQuery(); }
private MySqlDataReader Query(string sql) { con = Database.GetConnection(); cmd = new MySqlCommand(sql, con); for (int i = 0; i < 10; i++) { try { return cmd.ExecuteReader(); } catch (InvalidOperationException) { con.Close(); con.Open(); } } return null; }
jeg er desværre ikke med.. skal filen hedde noget specielt? skal det ligge i den samme fil det du CP'ede? skal der nogle <% %> ind før og efter koden? jeg har prøvet mig lidt frem, men har ikke fået det til at virke :(
har stadig ikke fattet det... jeg læser lidt mere om det, det er nok hele min forståelse det er galt med. I deler points, håber i er tilfredse med det. Mange tak for hjælpen.
nielsbrinch>> kan være det er mig der tager fejl.. men det ser ud til at du har prøvet at implementere en connection-pool ?! hvorfor er det lige du ulejliget dig med det, når det allerede er med i driveren fra ByteFX ?
jeg ved det faktisk ikke, men det kan du vel finde i dokumentationen... og hvis det ikke står her, kan du hente sourcekoden og implementere en property så du kan få kontrol over det.
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.