sql >> Databáze >  >> RDS >> Sqlserver

Čtěte data z databáze SQL pomocí nástroje pro výběr data a času

Tyto otázky tu vidíme každý den. Vycházejí ze stejného problému.

NIKDY NEPOUŽÍVEJTE ŘETĚZCOVÉ ŘETĚZENÍ K SESTAVOVÁNÍ DOTAZŮ SQL.

Je to velký problém. Samozřejmě jste se již setkali s prvním efektem. Jak převést řetězce přijatelným způsobem na efektivní datový typ? Potřebujete vyřešit problémy s analýzou pomocí vložených uvozovek, správné reprezentace dat a desetinných čísel pro základní databázový systém. Ale druhým a jemnějším vedlejším efektem zřetězení řetězců je vkládání SQL (Toto je jen poučný odkaz, protože SQL Injection je velmi rozsáhlé téma)

K vyřešení tohoto druhu problémů je jediným přijatelným způsobem použití PARAMETERS.
To znamená, že je to databázový stroj, který efektivně řeší otázku, potřebujete řetězec se zástupnými symboly parametrů (@něco) a kolekce Parametrů s přesným datovým typem pro hodnotu parametru.

Váš kód by se tedy měl změnit tímto způsobem

Dim strSQL As String = "SELECT EMP_ID,EMP_NAME,AT_STATUS,AT_REMARK " + 
                       "FROM ATTENDANCE WHERE AT_DATE = @editdate " + 
                       "ORDER BY EMP_NAME ASC"
Using con = new SqlConnection("constring_here")
    con.Open()
    Using cmd = new SqlCommand(strSQL, con)
        cmd.Parameters.AddWithValue("@editdate", DTPEDITAT.Value)
        ' do whatever you want with the command '
        ' like ExecuteReader or use a DataAdapter to fill datasets'
    End Using
End Using


  1. Neznámý sloupec v poddotazu mysql

  2. T-SQL není in (vyberte položku nefunguje (jak se očekává)

  3. Časový limit při získávání připojení po upgradu Knex

  4. java.lang.ClassNotFoundException:com.mysql.jdbc.Driver (maven + jboss)