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

Zabránění vkládání SQL v ASP.Net

Zkuste použít parametrizovaný dotaz zde je odkaz http://www.aspnet101.com/2007/03/parameterized-queries-in-asp-net/

Také nepoužívejte OpenQuery... použijte toto ke spuštění select

SELECT * FROM db...table WHERE ref = @ref AND bookno = @bookno

Další články popisující některé z vašich možností:

http://support.microsoft.com/kb/314520

Jaká je syntaxe T-SQL pro připojení k jinému serveru SQL?

Upraveno

Poznámka:Vaše původní otázka se týkala distribuovaných dotazů a propojených serverů. Tento nový příkaz neodkazuje na distribuovaný dotaz. Mohu jen předpokládat, že se nyní připojujete přímo k databázi. Zde je příklad, který by měl fungovat. Zde je další referenční stránka pro použití SqlCommand.Parameters

SqlCommand cmd = new SqlCommand("Select * from Table where [email protected]", con); 
cmd.Parameters.Add("@ref", SqlDbType.Int);
cmd.Parameters["@ref"] = 34;

Upraveno:

Ok, Jamie Taylore, pokusím se znovu odpovědět na vaši otázku.

OpenQuery používáte, protože pravděpodobně používáte propojenou DB

Problém je v zásadě v tom, že metoda OpenQuery bere řetězec, který nemůžete předat proměnnou jako součást řetězce, který jste odeslali do OpenQuery.

Místo toho můžete dotaz naformátovat takto. Zápis následuje servername.databasename.schemananame.tablename. Pokud používáte propojený server přes odbc, vynechejte název databáze a název schématu, jak je znázorněno níže

    Dim conn As SqlConnection = New SqlConnection("your SQL Connection String")
    Dim cmd As SqlCommand = conn.CreateCommand()
    cmd.CommandText = "Select * db...table where investor = @investor"
    Dim parameter As SqlParameter = cmd.CreateParameter()
    parameter.DbType = SqlDbType.Int
    parameter.ParameterName = "@investor"
    parameter.Direction = ParameterDirection.Input
    parameter.Value = 34


  1. Jak psát složité dotazy v SQL

  2. Najděte všechny nečíselné hodnoty ve sloupci v MariaDB

  3. Propojení Androidu s MS SQL SERVER 2008

  4. Modul Pythonu cx_Oracle modul nebyl nalezen