从中获取子串

时间:2013-06-26 09:16:11

标签: c# line-breaks substr

我的数据库中有一个充满ID的字符串

当我调用数据库来检索数据时,我将所有数据存储在一个字符串中,所有ID都在<br />之间。

 cmd = new OleDbCommand(getCode, conn);
                rdr = cmd.ExecuteReader();
                while (rdr.Read())
                {
                    custCodes += rdr[0].ToString() + "<br />";
                }

现在我想逐个从字符串中运行ID,以从数据库中检索其余的数据。

我想使用子字符串逐个检查ID。 到目前为止,我有这样的事情:

String str=custCodes ;
        int index = 0;


        while (index != first.Length)
        {
            int indexOf = first.IndexOf("<br />");
             str = first.Substring(indexOf);
            index += 1;
        }

但是我对我应该如何继续感到困惑。 我必须使用数组,并将代码存储在数组中,然后通过数据库运行它吗? 我知道我的代码是错误的,但我对如何解决它感到困惑。 子串从未成为编码的最佳部分。

6 个答案:

答案 0 :(得分:1)

为什么用'
'存储id??要逐个过滤结果并显示它们?然后请将结果存储在数据表或arraylist中。然后,您可以使用索引或列名称过滤结果。喜欢

更好的方法是将所有列或所需列存储到数据表中,如果需要

列名“id”,“name”,“email”

DataTable getdt(){
MySqlConnection conn = null;
            MySqlDataAdapter da ;
            DataTable dt = new DataTable();
            String sql="select id,name,email from tablename ";
            conn = new MySqlConnection(cs);
            da=new MySqlDataAdapter(sql,conn);



            conn.Open();
            try
            {
                DataSet dsl = new DataSet();
                da.Fill(dsl,"Table");
                dt = dsl.Tables["Table"];
                return dt;
            }
            catch (MySqlException ex)
            {
                String err = ex.Message;
                return dt;
            }
              } 

并在前端

只需执行以下代码即可将其拆分

DataTable ddt=new DataTable();
ddt=getdt();

int le=ddt.Rows.Count;

for(int i=0; i<le; i++){

int id=ddt.Rows[i]["id"];
String name=ddt.Rows[i]["name"].ToString();
}

你也可以使用ArrayList。

不需要找到结果的id,然后为每个id运行dbcall以提取其他列。这会降低您的申请速度。请使用sql adapter而不是mysql adapter。

答案 1 :(得分:0)

您可以使用String.Split方法从字符串中获取ID数组

以下是文档:

http://msdn.microsoft.com/en-us/library/tabh47cf.aspx

var ids = custCodes.Split("<br />");
foreach(var item in ids)
{
   //Check the current id
}

答案 2 :(得分:0)

似乎是一种非常奇怪的做事方式,但你可以使用以下方法: -

string[] custIds = custCodes.Split("<br />");

foreach(string s in custIds)
{
   int id = Convert.ToInt32(s);
   //Get record from DB with id etc..
}

答案 3 :(得分:0)

string[] ids = yourIds.Split(new string[] { "<br />" }, StringSplitOptions.RemoveEmptyEntries);

使用ids数组,您可以使用StringBuilder来形成一个大的SQL字符串来执行。

答案 4 :(得分:0)

使用“split-chars”数组将字符串拆分为数组 - 在您的情况下,只需<br />

var ids = idList.Split(new string[]{"<br />"}, StringSplitOptions.None);

这应该为您提供一个类型字符串数组,您可以将其解析为int,或者您可能需要的任何内容。

答案 5 :(得分:0)

我可以用Java给你一个例子。如果您在CustCodes中保存了所有ID,则可以这样做:

String[] ids = CustCodes.split("<br />");

for(int i = 0; i < ids.lenght; i++)    

system.out.println(ids[i])

我希望这可以帮到你。 你应该在c#

中找到相同的功能(拆分)

如果您需要更多帮助,请告诉我。 :)