sql >> Databáze >  >> RDS >> Mysql

Command.Parameters[@name].Value Správná syntaxe

Dobře, takže mi to funguje. Hlavním problémem bylo, že je potřeba porovnat null s null , nicméně int nemůže být null protože jde o typ hodnoty.

Musel jsem tedy svůj kód vyladit a podařilo se mi to vyřešit

int? AreaCode = null;

To mi umožnilo změnit svůj kód:

mySqlCommand.Parameters["@AreaCode"].Value = (PModel.AreaCode.HasValue ? PModel.AreaCode.Value : object)DBNull.Value );

Pro všechny, kteří si nejsou vědomi toho, co se zde děje:

Operátor ? dává typu hodnoty možnost nemít žádnou hodnotu , takže může =null .

tj.

int n = 0;
int? n = null;

bool b = false;
bool? b = null;



  1. Vytvoření výpisu databáze pro konkrétní tabulky a položky Postgres

  2. Jak vytvořit VARRAY jako člena bloku PL/SQL v databázi Oracle

  3. Jak vrátit sadu výsledků / kurzor z anonymního bloku Oracle PL/SQL, který provádí dynamické SQL?

  4. Obnovení databáze SQL Server (T-SQL)