将静态字符串sql命令分解为命令部分和单独的参数



我有一个带参数的静态字符串,被发送给SQL执行命令。
字符串的格式为delete 'Name' from table where x = 1 and y = 2select * from table where x = 1 and y = 2
我的问题是我需要把字符串分解成参数。
我如何打破字符串,以便我可以传递与参数的命令,以最少的工作单个函数?
我只有一个功能来修复和处理这个问题。


从这个:

protected object ExecuteScaler(string queryString) 
{ OpenConnection(); } 
DbCommand command = _provider.CreateCommand(); 
command.Connection = _connection; command.CommandText = queryString; command.CommandType = CommandType.Text; if (_useTransaction) {
command.Transaction = _transaction; } 
try { returnValue = command.ExecuteScalar(); } ... 
谁能给我举个例子?

当您构建这样的sql命令时:

// don't do this because of sql injection
sql = "SELECT * FROM MyTable WHERE Col2 = " + somevalue;

当你"跳出"字符串常量来放置一个值时,就是你想要使用参数占位符的地方:

// safe from sql injection
sql = "SELECT * FROM MyTable WHERE Col2 = @somevalue";

然后您可以使用Parameters集合提供@somevalue的值。

当查询需要一些固定值时,将它们保存在字符串中可能是可以的:

// the "type" never changes for this query:
sql = "SELECT * FROM MyTable WHERE type=1 and Col2 = @somevalue"; 

最新更新