Avatar billede dk_zerocool Nybegynder
31. maj 2005 - 07:40 Der er 8 kommentarer og
1 løsning

Parameter til MySql

Hvordan sender jeg parametre med over fra c#.net til min MySql-database. Jeg ved at der bruges @ ved MSSql, : Ved Oracle, men hvad bruges der ved MySql? Jeg har smidt min kode med:

----> Her kalder jeg metoden med @paramater

DatabaseController.GetDataSetByParameters("SELECT * FROM Members WHERE MemberID = @menberid", new string [] {"@memberid"}, new object[] {memberid});

----> Min Db-klasse

public static DataSet GetDataSetByParameters(string sql, string[] parameters, object[] values)
{
  MySQLConnection con = null;

try
{       
  con = new MySQLConnection(connectionstring.AsString);
  con.Open();

  MySQLCommand cmd = new MySQLCommand(sql,con); 
  MySQLDataAdapter sqlData = new MySQLDataAdapter(cmd);

  if(parameters.Length != values.Length)
  {
      for(int i = 0; i<parameters.Length; i++)
      {
      cmd.Parameters.Add(new MySQLParameter(parameters[i], values[i]));                       
      }
  }

  DataSet ds = new DataSet();
  sqlData.Fill(ds);

  return ds;
}
catch(Exception ex)
{
    return null;
}
finally
{     
  con.Close();
}
}
Avatar billede arne_v Ekspert
31. maj 2005 - 12:57 #1
MySQL accepterer også @
Avatar billede arne_v Ekspert
31. maj 2005 - 12:58 #2
et eksempel:

using System;
using System.Threading;
using ByteFX.Data.MySqlClient;

class MainClass
{
    public static void Main(string[] args)
    {
        MySqlConnection con = new MySqlConnection("Database=Test;Data Source=localhost;User Id=;Password=");
        con.Open();
        MySqlCommand cre = new MySqlCommand("CREATE TABLE dtest (i INTEGER PRIMARY KEY, d DATETIME)", con);
        cre.ExecuteNonQuery();
        MySqlCommand ins = new MySqlCommand("INSERT INTO dtest VALUES (@i, @d)", con);
        ins.Parameters.Add("@i", MySqlDbType.Int);
        ins.Parameters.Add("@d", MySqlDbType.Datetime);
        for(int i = 0; i < 10; i++)
        {
            ins.Parameters["@i"].Value = i;
            ins.Parameters["@d"].Value = DateTime.Now;
            Thread.Sleep(1000);
            ins.ExecuteNonQuery();
        }
        MySqlCommand sel = new MySqlCommand("SELECT * FROM dtest", con);
        MySqlDataReader rdr = sel.ExecuteReader();
        while(rdr.Read())
        {
            int i = (int)rdr[0];
            DateTime d = (DateTime)rdr[1];
            Console.WriteLine(i + " " + d);
        }
        rdr.Close();
        MySqlCommand drp = new MySqlCommand("DROP TABLE dtest", con);
        drp.ExecuteNonQuery();
        con.Close();
    }
}
Avatar billede dk_zerocool Nybegynder
01. juni 2005 - 21:24 #3
Jeg har prøvet at bruge ByteFx men får denne fejl: "Client does not support authentication protocol requested by server; consider upgrading MySQL client"

Ved du hvordan jeg kan løse fejlen, jeg har den nyeste version?
Avatar billede arne_v Ekspert
01. juni 2005 - 22:23 #4
Avatar billede arne_v Ekspert
01. juni 2005 - 22:23 #5
og ændre password til at bruge det gamle password format
Avatar billede arne_v Ekspert
01. juni 2005 - 22:24 #6
Men ByteFX er blever overtaget af MySQL selv og hedder nu MySQL Connector
for .NET

Prøv og hent nyeste her http://dev.mysql.com/downloads/connector/net/1.0.html
og se om ikke også det er fixet
Avatar billede dk_zerocool Nybegynder
01. juni 2005 - 23:40 #7
Sådan, nu har jeg fået det til at virke. Mange tak for hjælpen. Smider du ikke lige et svar?
Avatar billede arne_v Ekspert
02. juni 2005 - 07:00 #8
kommer her
Avatar billede arne_v Ekspert
22. juni 2005 - 17:30 #9
så mangler du bare at acceptere svaret
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
Computerworld tilbyder specialiserede kurser i database-management

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