C# 如何将子字符串从SQL数据库中的列检索到列表框中

C# 如何将子字符串从SQL数据库中的列检索到列表框中,c#,asp.net,sql-server-2008,C#,Asp.net,Sql Server 2008,请在以下方面帮助我: 我使用的是SQL database server 2008,其中有一个表,表中的列如所附图像所示。列表框单独“> 我想检索工具提示列并提取控件之后的字符串:和separate type=值字符串,并分别在列表框中列出 然后我想循环查看每一行,获取列表,并将此列表与另一组类似的列表进行比较,检查它们是否具有相同的字符串列表。我没有尝试过任何代码,因为我不知道如何从一开始就开始。任何帮助都将不胜感激。谢谢。以及更多关于和SqlCommand的阅读。我们如何启动类似的查询e这个

请在以下方面帮助我:

我使用的是
SQL database server 2008
,其中有一个表,表中的列如所附图像所示。列表框单独“>

我想检索工具提示列并提取控件之后的字符串:和separate type=值字符串,并分别在
列表框中列出


然后我想循环查看每一行,获取列表,并将此列表与另一组类似的列表进行比较,检查它们是否具有相同的字符串列表。我没有尝试过任何代码,因为我不知道如何从一开始就开始。任何帮助都将不胜感激。谢谢。

以及更多关于和SqlCommand的阅读。

我们如何启动类似的查询e这个

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;"
然后

我会给你

"Controls:ON_OFF = ON"

如果你有

配置文件\u控件表格

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
这为您提供了更大的灵活性,因为您可以筛选、加入、比较和使用其他内置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();
}

当您说“我没有尝试过任何代码”时,您可以使用此链接作为向列表框添加项目的参考。。。“,您是继承了此问题还是为自己创建了此问题。工具提示不能是多行文本而不是用分号分隔它们有什么原因吗?这个工具提示表我也用于其他目的。我还想知道当我保存这个工具提示表时,它是多行文本。但在数据库中,它是以单行的形式存储的。你们试过把它读回并显示出来吗?它应该保留换行符,我用它来显示
GridView
标题的工具提示,它保留了换行符。虽然这个链接可以回答这个问题,但最好在这里包含答案的基本部分,并提供链接供参考。如果链接页面发生更改,仅链接的答案可能会无效。我会尝试这样做,但我希望在
列表框中打开\关闭=打开,亮度=无,然后与另一个列表进行比较,跳转到下一行,然后再次以同样的方式与同一个列表进行比较。你给了我一个绝妙的想法。事实上,我将遵循你的第一个想法。只需告诉我如何使用这些设置,并将其放入一个
列表框
中,循环到每一行,然后使用类似的值集与我自己的
列表框
进行比较。
protected void SomeEvent_Handler(object sender, EventArgs e)
{
   myListBox2.DataSource = GetProfileSettings("FanProfile1");
   myListBox2.DataTextField = "Settings";
   myListBox2.DataBind();
}