残念ながら、IBMのUniDataデータベースシステムと何らかのやり取りをする必要があります。これは、UniObjects for .netを使用してC#コードから実行しています。
1つの検索ボックスを持つASP.NET検索ページを作成しています。私が抱えている問題は、基準で大文字と小文字が区別されることです。UniQueryで大文字と小文字を区別しない検索を行うにはどうすればよいですか?
すべてを返し、Linq to XMLステートメントで大文字と小文字を区別しないようにすることはできますが、効率が悪いため、パフォーマンスの問題が発生します。
これが私が書いたコードです:
using IBMU2.UODOTNET;
using UniObjectsHelper;
using System.Xml.Linq;
...
void DoSearch()
{
XElement xml;
using (UniSession us = UniHelper.OpenSession((UniDataConfig)ConfigurationManager.GetSection("unidataConfig")))
{
UniCommand cmd = us.CreateUniCommand();
// this is probably insecure. I will deal with that later
cmd.Command = string.Format(@"LIST UT.OPERS WITH @ID = ""{0}"" OR WITH LAST.NAME = ""{0}"" OR WITH FIRST.NAME = ""{0}"" OR WITH MIDDLE.NAME = ""{0}"" LAST.NAME FIRST.NAME MIDDLE.NAME TOXML", txtSearch.Text);
cmd.Execute();
xml = XElement.Parse(cmd.Response);
}
gvwResults.DataSource = from x in xml.Descendants("UT.OPERS")
select new
{
User = x.Attribute("_ID").Value,
FirstName = x.Attribute("FIRST.NAME").Value,
LastName = x.Attribute("LAST.NAME").Value,
MiddleName = x.Attribute("MIDDLE.NAME").Value
};
gvwResults.DataBind();
}
編集
私はこれを見つけました:
UDT.OPTIONS 92
U_INSENSITIVE_MATCH
このオプションは、ディクショナリ定義にPick®スタイルの変換を含むデータで実行されるクエリに影響します。Pick®スタイルの処理コードMCL、MCT、およびMCUは、大文字と小文字を変換します。これらの変換は、比較と選択の前にデータに適用されるため、大文字と小文字が異なる一致する文字は省略されます。UDT.OPTIONS 92を使用すると、LIKEはデータと選択の基になるリテラルの両方を変換するため、選択は実際には大文字と小文字に基づいていません。
「Pick®スタイルの処理コードMCL、MCT、MCU」とは何なのかよくわかりません。誰か説明できますか?