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)
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
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.