1

応募した会社から小さなプロジェクトを与えられました。GridView彼らは、 asp.netを使用する小さなアプリケーションと、DataSet (xsd) ファイルを使用するアプリケーションを望んでいFormViewますObjectDataSource。私は 3 層アプリケーションを実行してきましたが、別の方法で、DataAccess レイヤーを、パラメーターを受け入れてデータテーブルを返すメソッドなどを持つ ac シャープ ファイルとして持っています。ダルクラス。今、これObjectDataSourceは私があまり好きではなかった sth です。どこにあるのかさえわからないコードを生成していますか?

アプリケーションをある程度 (90%) まで動作させることができました。残りの 10% は、私の質問です。名前機能で検索する必要があります。2 つの ObjectDataSources 1 と 2 がありObjectDatasource1ます。最初のロードでテーブルからすべてのレコードを取得するだけです。検索ボタンがクリックされたとき、gridview のデータソースを、パラメーター (すべて wizzzardz によって定義されている) を受け入れることになっObjectDataSourceているメソッドが呼び出され、パラメーター ソースがコントロール ( ) である 2 番目に設定しました。myは からパラメータを取得する場所では正常に動作しますが、この検索で​​は何も返されません。検索ステートメントは次のとおりです。GetDataByNameSearchTextBox.TextFormViewQueryString

SELECT     Birthday, CreatedAt, ID, Name, Surname
FROM         Users
WHERE     (Name LIKE '%@name%') OR
                      (Surname LIKE '%@name%')

これらの ObjectDataSources がどのように使用され、生活を楽にするか (!)

4

1 に答える 1

1

コード サンプルがないとわかりにくいですが、SQL パラメーターの使用方法が少し変わっていることに気付きました。

あなたが持っている:

SELECT Birthday, CreatedAt, ID, Name, Surname 
FROM Users 
WHERE (Name LIKE '%@name%') OR (Surname LIKE '%@name%')

SQL '@' パラメーターの周りにスピーチマークがある場合に機能するかどうかはわかりません。上記の例では、リテラル文字列 '%@name%' がクエリで使用されるだけになると思います。そのため、結果が得られない可能性があります。

SQL パラメータは通常、次のように使用されます。

SELECT Birthday, CreatedAt, ID, Name, Surname 
FROM Users 
WHERE (Name LIKE @name) OR (Surname LIKE @name)

...しかし、もちろん、「%」ワイルドカードは失われます。クエリに渡す前に、パラメーター文字列に直接追加できる場合があります。それが不可能な場合は、次のバージョンを試してください。

SELECT Birthday, CreatedAt, ID, Name, Surname 
FROM Users 
WHERE (Name LIKE '%' + @name + '%') OR (Surname LIKE '%' + @name + '%')
于 2009-09-20T08:47:52.107 に答える