tsql - Safety of C# DataTable as SQL Parameter -


i read lot sql injections lately , know sqlparameter not prevent injections sure, table parameter safe single parameter?

some untested uncompiled example code clarification:

is this...

sql:

create procedure dbo.insertsingle      @name nvarchar(max),     @phone nvarchar(max) begin     set nocount on;       insert foobar.dbo.sometable      values(@name, @phone) end go 

c#:

foreach(user u in users)  {      connection.open();       sqlcommand com = connection.createcommand();      com.commandtype = commandtype.storedprocedure;      com.commandtext = "dbo.insertsingle";       sqlparameter p = new sqlparameter("@name", u.name);      com.parameters.add(p);       p = new sqlparameter("@phone", u.phone);      com.parameters.add(p);       com.executescalar(); } 

as safe this?

sql:

create procedure dbo.insertbunch      @valuesastable dbo.valuesastabletype readonly begin     set nocount on;      insert foobar.dbo.sometable          select *          @valuesastable end go 

c#:

datatable valuesastable = users.getsomeinsertdata(); connection.open();  sqlcommand com = connection.createcommand(); com.commandtype = commandtype.storedprocedure; com.commandtext = "dbo.insertbunch";  sqlparameter p = new sqlparameter("@valuesastable", valuesadtable); p.sqldbtype = sqldbtype.structured; p.typename = "dbo.valuesastabletype"; com.parameters.add(p);  com.executescalar(); 

i tried search it, cannot find input. can link me in right direction?

thanks in advance

typed parameters prevent sql injection if there no possibility interpreted literal commands, , executed. whether transported scalar or table-valued parameters, not make difference in regard.


Comments

Popular posts from this blog

neo4j - finding mutual friends in a cypher statement starting with three or more persons -

php - How to remove letter in front of the word laravel -

minify - Minimizing css files -