Premiär! Fyndchans i SweClockers Månadens Drop
Permalänk
Medlem

C# och MySQL

Håller på ett ett biblioteksprogram som projektarbete men har stött på ett par problem, har följt flera guider på nätet för att kunna ansluta till en databas men får hela tiden errors. t.ex. att man inte kan nå hosten eller att den nu inte finns. Har testat flera olika metoder att ansluta och flera olika databas hostar utan några vidare resultat.

Skulle vara tacksam om någon kunde hänvisa mig till en vettig guide som ni vet fungerar eller komma med exempelkod för anslutningen.

Permalänk
Medlem

Är det fel på databasen eller din kod som ansluter mot den?
Prova att köra en lokal instans av mysql om du inte redan gör det för att utesluta att det inte är anslutningen.

Annars brukar jag köra med NHibernate, kanske något att spana in för att göra det lite enklare http://nhforge.org/

Permalänk
Medlem

Tror det är min kod, min polare gör ett admin webbgränssnitt utav det hela och han har inga som helst problem att ansluta.

Permalänk
Medlem

Börja enkelt genom att installera MySQL lokalt på datorn. Värdnamnet (eller IP) är "localhost" eller 127.0.0.1, porten är som standard 3306 så kolla att den inte är blockerad av ett annat program. Som standard är inloggningen endast "root" utan något lösenord. Ladda gärna ner apache och phpmyadmin för ett webbgränssnitt över databasen, vilket du kommer åt via att skriva localhost/phpmyadmin i webbläsaren. Enklast för att sätta upp allt detta på en gång är att ladda ner XAMPP så får du allt på en gång.

För att komma igång med C# och MySQL installerar du t.ex. .net connector for mysql vilket finns på mysqls hemsida.

Skummade igenom denna lite snabbt http://www.zetcode.com/db/mysqlcsharptutorial/ och den såg vettig ut. Går igenom det mesta av the basics.

Visa signatur

AW3423DW QD-OLED - Ryzen 5800x - MSI Gaming Trio X 3090 - 64GB 3600@cl16 - Samsung 980 Pro 2TB/WD Black SN850 2TB

Permalänk
Medlem

Var visst inte noga med detaljer angående mina olika databas hostar.
Har testat sätta upp databaserna på följande:
1. VPS - LAMP server med phpmyadmin
2. Virtuel server som vi har satt upp i skolan, även där LAMP och phpmyadmin.
3. Har lånat en databas på en polares surftown konto.
4. Och sist har jag självklart satt upp en databas på min egna dator.

Men som jag nämnde innan så är jag nästintill 100% på att det är koden som är boven i det här fallet, och därför behöver jag bara lite hjälp med att hitta rätt. Har hittat en hel del guider som jag inte kommit någonvart med.

Länk till anslutnings classen: https://www.dropbox.com/s/pvft914hxx8z3j4/DBconnection.cs

Permalänk
Medlem

I din kod har du en hel del grejer som inte är relevant just nu. Så testa att göra som guiden jag länka gjort.

using System; using MySql.Data.MySqlClient; public class Example { static void Main() { string cs = @server=localhost;userid=root; password=p@55w0rd;database=test; MySqlConnection conn = null; try { conn = new MySqlConnection(cs); conn.Open(); MySqlCommand cmd = new MySqlCommand(); cmd.Connection = conn; cmd.CommandText = "INSERT INTO Personer(Name) VALUES(@Name)"; cmd.Prepare(); cmd.Parameters.AddWithValue("@Name", "Trygve Gulbranssen"); cmd.ExecuteNonQuery(); } catch (MySqlException ex) { Console.WriteLine("Error: {0}", ex.ToString()); } finally { if (conn != null) { conn.Close(); } } } }

Ändra databas namnet till den databas du skapat lokalt, skapa ett bord som heter Personer i databasen och kolla om Trygve Gulbranssen skrivs in när du kör programmet. Denna kod funkar 100% om du gjort allt rätt.

Visa signatur

AW3423DW QD-OLED - Ryzen 5800x - MSI Gaming Trio X 3090 - 64GB 3600@cl16 - Samsung 980 Pro 2TB/WD Black SN850 2TB

Permalänk
Medlem
Skrivet av celoz:

Ändra databas namnet till den databas du skapat lokalt, skapa ett bord som heter Personer i databasen och kolla om Trygve Gulbranssen skrivs in när du kör programmet. Denna kod funkar 100% om du gjort allt rätt.

Gjorde precis som du sa, och det fungerar lokalt, men när man kör databaserna på en annan host så får jag samma error hela tiden.
"Unable to connect to any of the specified MySQL hosts"

Någon som har förslag på vad det kan bero på? Kan inte fortsätta med projektarbetet om jag inte kan använda rätt databaser. Eftersom jag inte är den enda som jobbar med just de databaserna så kan jag inte ha de lokalt dessutom så har jag 2 datorer som jag jobbar ifrån.

Permalänk
Medlem

Brandvägg?

Permalänk
Medlem

Kanske något med connectionstringen? http://www.connectionstrings.com/mysql
Kanske inte ansluter på rätt port? Default är 3306

Permalänk

Om jag inte missminner mig så måste du i MySQL ändra åtkomstinställningarna för "användaren" för att ansluta till en MySQL-server på annan host. Den är bara inställd på att tillåta anslutningar lokalt normalt sett.

Edit: Testa anslut till databasen via MySQL-Workbench.

Visa signatur

För många datorer för signaturen.
http://h23.se

Permalänk
Medlem

Jepp, skulle precis skriva det, har lyckats göra en riktig felsökning nu och allt tyder på att det är MySQL-servern som inte tillåter anslutningen. Men tack för hjälpen allihopa

Permalänk
Medlem

Hade problem med att ansluta till min kompis databas, lösningen i vårt fall var att ändra från public Network till Home Network i Windows/brandväggen.

Visa signatur

[Asus P5Q-E] [Q6600 G0 @ 3,6 ghz] [Scythe Yasya] [Gigabyte Gtx 460 1gb] [4x2 Gb Kingston HyperX PC8500] [OCZ ModXstream Pro 700 W ] [Crucial M4 128 gb ]
HTPC - AMD Athlon X2 5050e - M4N78-VM - Kingston HyperX 2 GB - Seagate 7200.12 1 TB - Seagate Green SATA III 2TB

Permalänk
Medlem

Jo jo men mitt problem var att det inte gick att ansluta från något nät alls. Och polaren gör en hemsida som är bunden till databasen men de ligger på samma server så då är det inget problem att ansluta.

Permalänk
Medlem

Har personligen inte tid att berätta men ditt problem ligger i #1 brandväggen, du behöver öppna upp porten utåt. #2 du behöver configuera MySQL att lysna på rätt adaptrar. #3 Du behöver configurera att använder konto som har rättigheter att connecta utifrån.

Generelt sett så ska man ALDRIG NÅGONSIN öppna ut sin databas mot nätet. Riktig dålig praktis och är bara en riktigt svag säkerhets länk. Bäst du kan göra är fixa ihop en WCF tjänst på servern du har MySQL databasen på och använda dig av den för att dela data.

Visa signatur

Speldator: Ryzen 7800X3D, 64GB DDR5, RTX 3070
Server: i7-8700k, 32GB DDR4, RTX2080
Steam deck + de fiesta konsoller.