Visa ett inlägg
Oläst 2015-10-28, 16:44 #8
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Jag skulle också rekommendera att skriva om det till en SP som du skickar in värdena till, det blir bättre struktur och snabbare exekvering jämfört med denna dynamiska SQL-sats.

Använd ADO.NET och parameteriserad ADO/SQL så du omöjliggör SQL-Injections när du ändå fixar till koden.

https://msdn.microsoft.com/en-us/lib...v=vs.110).aspx

Kod:
// C#
OleDbCommand command = new OleDbCommand("SampleProc", connection);
command.CommandType = CommandType.StoredProcedure;

OleDbParameter parameter = command.Parameters.Add(  "RETURN_VALUE", OleDbType.Integer);
parameter.Direction = ParameterDirection.ReturnValue;

parameter = command.Parameters.Add(  "@InputParm", OleDbType.VarChar, 12);
parameter.Value = "Sample Value";

parameter = command.Parameters.Add(  "@OutputParm", OleDbType.VarChar, 28);
parameter.Direction = ParameterDirection.Output;

För att skapa en Stored Procedure i MS SQL-Server se här: https://msdn.microsoft.com/en-us/library/ms345415.aspx


Kod:
-- Skapa en SP
USE AdventureWorks2012;
GO
CREATE PROCEDURE HumanResources.uspGetEmployeesTest2 
    @LastName nvarchar(50), 
    @FirstName nvarchar(50) 
AS 

    SET NOCOUNT ON;
    SELECT FirstName, LastName, Department
    FROM HumanResources.vEmployeeDepartmentHistory
    WHERE FirstName = @FirstName AND LastName = @LastName
    AND EndDate IS NULL;
GO

Kod:
-- Anropa en SP för att testa
EXECUTE HumanResources.uspGetEmployeesTest2 N'Ackerman', N'Pilar';
-- Or
EXEC HumanResources.uspGetEmployeesTest2 @LastName = N'Ackerman', @FirstName = N'Pilar';
GO
-- Or
EXECUTE HumanResources.uspGetEmployeesTest2 @FirstName = N'Pilar', @LastName = N'Ackerman';
GO

Senast redigerad av Conny Westh den 2015-10-28 klockan 16:57
Conny Westh är inte uppkopplad   Svara med citatSvara med citat