0

次のことで私を助けてください:

SQL database server 2008添付の画像に示すように、列を持つテーブルがある を使用しています。ToolTip 列を取得し、**Controls:** の後に文字列を抽出し、type=value 文字列とリストを <code>ListBox</code> に別々に分けたい

ToolTip 列を取得し、Controls:の後に文字列を抽出し、type=value 文字列とリストをListBox別々に分離したいと考えています。

次に、各行をループしてリストを取得し、このリストを別の一連の同様のリストと比較して、同じ文字列リストがあるかどうかを確認します。そもそもどうやって始めればいいのかわからないので、コードを試したことはありません。どんな助けでも大歓迎です。ありがとうございました。

4

3 に答える 3

1

あったほうがいいよ

Profile_Controlsテーブル

Profile_Name       Controls_Key     Controls_Value
-----------------------------------------------------
Lamp_Profile1      ON_OFF           ON
Lamp_Profile1      BRIGHTNESS       NONE
Fan_Profile1       ON_OFF           ON
Fan_Profile1       SPEED            NONE
.....

次に、選択できます

Select Controls_Key+'='+Controls_Value AS Settings From Profile_Controls Where Profile_Name = 'Fan_Profile1'

Results
-----------------
Settings
---------------------
ON_OFF=ON
SPEED=ON

これにより、フィルタリング、JOIN、COMPARE、その他の組み込み SQL 機能を使用できるため、柔軟性が向上します。

あなたがまだ持っているようにテーブル構造を維持したい場合

string[] mysplit = Tool_Tip.Split(s.Split(new string[]{"Controls:"}, StringSplitOptions.RemoveEmptyEntries);

string controls = mysplit[1].Substring(0); //ON_OFF=On;BRIGHTNESS=NONE

string[] eachSettings = controls.Split(';');

//eachSettings[0] = ON_OFF=ON
//eachSettings[1] = BRIGHTNESS=NONE

アップデート

public System.Data.DataTable GetProfileSettings(string profilename)
{
   string sql = "Select Controls_Key+'='+Controls_Value AS Settings From Profile_Controls Where Profile_Name = '"+profilename+"'";
   //write ADO.Net code here to get settings into DataTable
   //DataTable dt = blah blah blah;

   return dt;
}

あなたのページで

protected void SomeEvent_Handler(object sender, EventArgs e)
{
   myListBox2.DataSource = GetProfileSettings("FanProfile1");
   myListBox2.DataTextField = "Settings";
   myListBox2.DataBind();
}

リストボックスに項目を追加するための参照としてこのリンクを使用できます

于 2012-09-08T05:57:17.430 に答える
0

String.Split and more reading on SqlConnection and SqlCommand

于 2012-09-08T05:23:44.680 に答える
0

このようなクエリを起動するのはどうですか

select tooltip from FooTable where Profile_Type='Foo_Profile_Type' and Profile_Name = 'Foo_Profile_Name'

そして得る

"Type = LAMP;Profile = Lamp_Profile1;Controls:ON_OFF = ON;BRIGHTNESS = NONE;"

それで

string str = returnedstring.Split(new string[]{"Controls:"})[2];

あなたにあげます

"Controls:ON_OFF = ON"
于 2012-09-08T05:47:45.807 に答える