Avatar billede trumf Nybegynder
31. december 2004 - 04:26 Der er 22 kommentarer og
1 løsning

connectionstring til MySQL

Hejsa E

Jeg skal nu til at prøve at lave noget .NET og skal derfor have fat i en DB på en af mine servere.

Der er kun vs.net på min klient, men serveren er en 2003 SBS, så det skulle vel ikke være et problem.

På serveren har jeg installeret mysql-connector-net-1.0.3-gamma, men alligevel får jeg en fejl når jeg kører min applikation.

The 'MySQLProv' provider is not registered on the local machine. --> No error information available: REGDB_E_CLASSNOTREG(0x80040154).

Min connstr ser således ud:
private static string ConnStr = "Provider=MySQLProv;UID=***;PWD=***;Data Source=tcp:192.168.2.2,3306;Database=minDB;";

Hvad skal jeg gøre nu ???

PS er det i øvrigt bedre med bytefx ado.net end den oledb jeg prøver med ?
Avatar billede arne_v Ekspert
31. december 2004 - 10:53 #1
Den MySQL connector du har installeret er afløseren for ByteFX.

Ja. den er bedre end OLE DB.

Nej. Du skal ikke angive provider i connection string.
Avatar billede arne_v Ekspert
31. december 2004 - 10:54 #2
Med ByteFx ser det ud som:

MySqlConnection con = new MySqlConnection("Database=Test;Data Source=localhost;User Id=;Password=");

Og jeg formoder faktisk at det er det samme med MySQL connector (jeg formoder at
de kun har ændre namespacet)
Avatar billede trumf Nybegynder
31. december 2004 - 13:50 #3
OK, men problemet er vist at min app ligger på min klient, som så prøver at kalde en DB der ligger på en anden maskine.

Når jeg laver den con du skriver får jeg fejlen.
An OLE DB Provider was not specified in the ConnectionString.  An example would be, 'Provider=SQLOLEDB;'.
Avatar billede arne_v Ekspert
31. december 2004 - 13:52 #4
Lyder stadig som at du bruger OleDbConnection ikke MySqlConnection
Avatar billede arne_v Ekspert
31. december 2004 - 13:52 #5
MySQL er en database server, så den kan sagtens tilgåes fra andre servere
(bruger port 3306, hvius du skal have lukket op i en firewall)
Avatar billede trumf Nybegynder
31. december 2004 - 13:54 #6
Jeg sidder og bakser med en webservice og koden ser sådan ud:
        private static string ConnStr = "Database=vinguide;Data Source=192.168.2.2;User Id=;Password=";

        [WebMethod(Description="This service gives you data")]
        public DataSet VinGuideData()
        {
            OleDbDataAdapter oDBAdapter;
            DataSet oDS;

            oDBAdapter = new OleDbDataAdapter("select * from vin limit 10", ConnStr);
            oDS = new DataSet();
            oDBAdapter.Fill(oDS, "Wine");
            return oDS;
        }

Jeg er ny til .NET så bær over med mig, hvis jeg virker lidt dum..
Avatar billede arne_v Ekspert
31. december 2004 - 13:58 #7
Så er det OleDbDataAdapter som skal være en MySqlDataAdapter.

(og du skal have den rigtige using)
Avatar billede trumf Nybegynder
31. december 2004 - 14:02 #8
ved using kan jeg kun vælge common, odbc, oledb, sqlclient og sqltypes
Skal der så installeres noget ?
og det skal vel installeres på på klienten hvor jeg har vs.net og på serveren...
Avatar billede arne_v Ekspert
31. december 2004 - 14:04 #9
Du skal have installeret mysql-connector-net-1.0.3-gamma (eller den ældre ByteFX)
på din udviklings maskine.

Hvis det er ByteFX så starter namespace med ByteFX (og ikke System).

Gad vide om ikke MySQL starter med MySQL (og ikke System).
Avatar billede arne_v Ekspert
31. december 2004 - 14:09 #10
Jep.

using MySql.Data.MySqlClient ;
Avatar billede trumf Nybegynder
31. december 2004 - 14:18 #11
vs.net brokker sig over MySqlDataAdapter og oDBAdapter som ikke findes i namespacet!
Det der gamma er installeret på begge maskiner!

192.168.2.2 er serveren og på MySQL serveren er der lavet en user med adgang fra klienten...

private static string ConnStr = "Database=vinguide;Data Source=192.168.2.2;User Id=;Password=";

        [WebMethod(Description="This service gives you data")]
        public DataSet VinGuideData()
        {
            MySqlDataAdapter oDBAdapter;
            DataSet oDS;

            oDBAdapter = new MySqlDataAdapter("select * from vin limit 10", ConnStr);
            oDS = new DataSet();
            oDBAdapter.Fill(oDS, "Wine");
            return oDS;
        }
Avatar billede trumf Nybegynder
31. december 2004 - 14:21 #12
The type or namespace name 'MySql' could not be found (are you missing a using directive or an assembly reference?)
Og så er der streg under MySql efter using
Avatar billede arne_v Ekspert
31. december 2004 - 14:28 #13
Så skal du ud og tilføje en reference til MySQL connector assemblyen.
Avatar billede arne_v Ekspert
31. december 2004 - 14:29 #14
MySql.Data.dll
Avatar billede trumf Nybegynder
31. december 2004 - 14:46 #15
Hvor skal det lige ind henne ?

using System.Reflection;
using System.Runtime.CompilerServices;

//
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
//
[assembly: AssemblyTitle("")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("")]
[assembly: AssemblyCopyright("")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]       

//
// Version information for an assembly consists of the following four values:
//
//      Major Version
//      Minor Version
//      Build Number
//      Revision
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:

[assembly: AssemblyVersion("1.0.*")]

//
// In order to sign your assembly you must specify a key to use. Refer to the
// Microsoft .NET Framework documentation for more information on assembly signing.
//
// Use the attributes below to control which key is used for signing.
//
// Notes:
//  (*) If no key is specified, the assembly is not signed.
//  (*) KeyName refers to a key that has been installed in the Crypto Service
//      Provider (CSP) on your machine. KeyFile refers to a file which contains
//      a key.
//  (*) If the KeyFile and the KeyName values are both specified, the
//      following processing occurs:
//      (1) If the KeyName can be found in the CSP, that key is used.
//      (2) If the KeyName does not exist and the KeyFile does exist, the key
//          in the KeyFile is installed into the CSP and used.
//  (*) In order to create a KeyFile, you can use the sn.exe (Strong Name) utility.
//        When specifying the KeyFile, the location of the KeyFile should be
//        relative to the "project output directory". The location of the project output
//        directory is dependent on whether you are working with a local or web project.
//        For local projects, the project output directory is defined as
//      <Project Directory>\obj\<Configuration>. For example, if your KeyFile is
//      located in the project directory, you would specify the AssemblyKeyFile
//      attribute as [assembly: AssemblyKeyFile("..\\..\\mykey.snk")]
//        For web projects, the project output directory is defined as
//      %HOMEPATH%\VSWebCache\<Machine Name>\<Project Directory>\obj\<Configuration>.
//  (*) Delay Signing is an advanced option - see the Microsoft .NET Framework
//      documentation for more information on this.
//
[assembly: AssemblyDelaySign(false)]
[assembly: AssemblyKeyFile("")]
[assembly: AssemblyKeyName("")]
Avatar billede arne_v Ekspert
31. december 2004 - 14:56 #16
Det er ikke noget du angiver i koden, men du noget du angiver i projektet.

Jeg bruger ikke selv VS.NET så jeg ved ikke hvor det er gemt henne i den.
Avatar billede trumf Nybegynder
31. december 2004 - 15:00 #17
Jeg kan tilføje en reference, men jeg kan ikke finde den der gamma, men byteFX har jeg fundet og tilføjet og så skete der noget....
Jeg får dog stadig en fejl:
Host '192.168.1.2' is blocked because of many connection errors.  Unblock with 'mysqladmin flush-hosts'
1.2 er min klient!
Avatar billede arne_v Ekspert
31. december 2004 - 15:03 #18
Du skal tilføje en reference til MySql.Data.dll som ligger der hvor du har
installeret gamme.

Men skidt pyt. ByteFX er lige så god.

Den sidste fejl er da til at forholde sig til. Der står jo hvordan du løser
det. Alternativt kan du jo bare genstarte MySQL (forudsat at det ikke er
en production server).
Avatar billede trumf Nybegynder
31. december 2004 - 15:03 #19
Jeg installerede først den der gamma og bagefter bytefx (fordi jeg så at du anbefalede den i en anden tråd) så det kan måske væpre at bytefx har overskrevet gamma eller noget i den stil ?
Avatar billede trumf Nybegynder
31. december 2004 - 15:43 #20
Jeg fandt den mysql connector ved at browse efter den, så nu er det på plads. Nu genstarter jeg lige serveren, for det hjælper ikke at flushe!!!
Avatar billede trumf Nybegynder
31. december 2004 - 15:46 #21
Og så kom der data.... :-)

Du er sgu fantastisk. Smider du lige et svar
Avatar billede arne_v Ekspert
31. december 2004 - 15:47 #22
yes sir
Avatar billede trumf Nybegynder
31. december 2004 - 16:00 #23
Regner med dig i morgen når "vi" skal deploye den live :-)

Godt nytår

nu skal jeg gøre mig klar...
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester