Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Programmeren

C# MySQL datetime problemen

meneer_ed
3 antwoorden
  • Ik heb een klasse die alle verbindingen met een db afhandelt.
    Nu werkt deze met PostgreSQL en moet nu vervangen worden door MySQL.

    Snippet waarhet om gaat
    [code:1:f02e604870]
    string sqlString = @"INSERT IGNORE INTO tests :inSerial, :inType, :inDatetime, :inTestresult, :inLine";

    command = new MySqlCommand(sqlString, connection, transaction);
    //command = new NpgsqlCommand(sqlString, connection, transaction);
    command.CommandType = CommandType.StoredProcedure;

    command.Parameters.Add(new MySqlParameter(":inSerial", DbType.String));
    command.Parameters.Add(new MySqlParameter(":inType", DbType.Byte));
    command.Parameters.Add(new MySqlParameter(":inDatetime", DbType.DateTime));
    command.Parameters.Add(new MySqlParameter(":inTestresult", DbType.Boolean));
    command.Parameters.Add(new MySqlParameter(":inLine", DbType.String));

    command.Prepare();
    return true;
    [/code:1:f02e604870][code:1:f02e604870]
    public bool AddSerial(string serial, Byte type, DateTime date, bool testResult, string line)
    {
    command.Parameters[":inSerial"].Value = serial;
    command.Parameters[":inType"].Value = type;
    command.Parameters["inDatetime"].Value = date;
    command.Parameters[":inTestresult"].Value = testResult;
    command.Parameters[":inLine"].Value =
    line.Substring(0, line.Length >= 255 ? 255 : 0);
    return (bool)command.ExecuteScalar();
    }
    [/code:1:f02e604870]
    Ik heb deze klasse niet gemaakt, maar het lijkt mij een goede klasse die in de toekomst veranderingen snel toe laat.

    Nu geeft Visual Studio de volgende error:
    A MySqlParameter with ParameterName 'inDatetime' is not contained by this MySqlParameterCollection.

    Bij
    [code:1:f02e604870]
    command.Parameters["inDatetime"].Value = date;
    [/code:1:f02e604870]
    De waarde van date is echter netjes
    [code:1:f02e604870]date {2-3-2005 11:42:02} System.DateTime[/code:1:f02e604870]

    Deze code werkte in PostgreSQL en de MySQL is een rechtstreekse import via ODBC.
    [code:1:f02e604870]
    datetime datetime NULL PRI 0000-00-00 00:00:00 select,insert,update,references
    [/code:1:f02e604870]
    In Pgql is datetime timestamp without timezone.
    Opmaak hetzelfde als in MySQL.

    Ik heb zo'n honderd vermoedens.
    De eerste ligt aan .NET datetime naar MySQL, maar dan zou postgresql ook fouten moeten geven.
    Het andere is de benaming van de kolommen. Mag dit wel?
  • Hier staat:
    [code:1:b37f0449e6]
    command.Parameters.Add(new MySqlParameter(":inDatetime", DbType.DateTime));
    [/code:1:b37f0449e6]
    En hier:
    [code:1:b37f0449e6]
    command.Parameters["inDatetime"].Value = date;
    [/code:1:b37f0449e6]
    Ontdek de verschillen :wink:
    [size=9:b37f0449e6]kijk naar de naamgeving…[/size:b37f0449e6]
  • Darn.

    Ik word te oud voor dit vak ;)

    Eerst kijken of je variabelen goede benaming hebben en of ze de goede inhoud kunnen bevatten. En rustig de foutmelding lezen.

    Dank.

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.