2016-07-25 4 views
-2

私は正規表現を初めて使用しています。 EnterNameと::実際の値とのBranchCode は、私は今、私はこれを交換する必要がコロン(:)で始まる単語の正規表現

DECLARE @Name VarChar(20) 
DECLARE @BranchCode Char(3) 

select @Name=:EnterName 
select @BranchCode=:EnterBranchCode 

select * from Master where [email protected] and [email protected] 

以下のようなSQLクエリを持っています。私は正規表現を使用してこれを解決しようとしています。

は、私はこれをしたいすべてがこの

Collect SQL Parameter from Web Application dynamically

+0

これは私がまだ試したことです@ "/ \ B:\ S +/g"); – Regon

+3

データベースアクセスに使用しているライブラリは、準備されたステートメントを作成し、自分でクエリを作成することなくパラメータ値を適用する方法があります。この方法はエラーが発生しやすく、SQLインジェクションの影響を受けやすくなります。 – adv12

+0

私の主な質問はこれですか?これはこれですhttp://stackoverflow.com/questions/38486476/collect-sql-parameter-from-web-application-dynamically?noredirect=1#comment64375197_38486476 – Regon

答えて

3

を達成することである。この正規表現はokです(/\B:\S+/g") for this ???

ですいいえ、これはSqlParametersがためているものです。あなたのSQL内で使用することができる変数を作成することに加えて、彼らはあなた自身を開こうとしているものであるsql injection attacksから保護します。それらを使用する方法については、スタックオーバーフロー上の例の

充実しています、などthis one.

その後、値をユーザーに促し与えられたクエリからこれらを解析するために...

  1. 単に取りますselect * from foo where bar = @barName
  2. のような定期的なパラメータを持つクエリは、あなたは、正規表現の各パラメータの@\w+
  3. とかなり簡単それら@barNameパラメータはRegexをユーザーに尋ねることができます
    1. パラメータ
    2. パラメータ
  4. の値の型は、それぞれのSqlParameterを構築し、あなたのSqlCommandオブジェクトに追加します。

あなたは3.1なしで離れることができるかもしれません。彼らがあなたに与えるものに基づいて最高の推測をすることができるかもしれません。しかし、時々、あなたに明示するように求めなければなりません。

+1

@nicael素敵なユーザースクリプト。 – Will

+0

Lolユーザースクリプトなし:D – nicael

+0

私の主な質問はこれです、http://stackoverflow.com/questions/38486476/collect-sql-parameter-from-web-application-dynamically?noredirect=1#comment64375197_38486476これについて – Regon

関連する問題