0

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

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

 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;
        }

但我对我应该如何继续感到困惑。我必须使用数组,并将代码存储在数组中,然后通过数据库运行它吗?我知道我的代码是错误的,但我不知道如何修复它。子字符串从来都不是我最喜欢的编码部分。

4

6 回答 6

1

你为什么用'
'存储id?。逐一过滤结果并显示它们?那么请将结果存储在数据表或数组列表中。然后您可以使用索引或列名过滤结果。像

更好的是将所有列或您想要的列存储到数据表中,就像您想要的那样

列名 "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 适配器而不是 mysql 适配器。

于 2013-06-26T09:33:18.077 回答
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
}
于 2013-06-26T09:21:04.797 回答
0

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

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

foreach(string s in custIds)
{
   int id = Convert.ToInt32(s);
   //Get record from DB with id etc..
}
于 2013-06-26T09:23:12.023 回答
0
string[] ids = yourIds.Split(new string[] { "<br />" }, StringSplitOptions.RemoveEmptyEntries);

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

于 2013-06-26T09:23:36.650 回答
0

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

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

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

于 2013-06-26T09:26:21.613 回答
0

我可以给你一个Java的例子。如果您将所有 id 保存在 CustCodes 中,您可以通过以下方式进行操作:

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

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

system.out.println(ids[i])

我希望这可以帮助你。您应该在 c# 中找到相同的函数(拆分)

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

于 2013-06-26T09:32:03.467 回答