none
同志们。我又郁闷了,如果datarow row=table.select("数据库字段 in('"+数组+"')") 明明数组中有很多值,为什么row中一个都没取到呢? RRS feed

  • 问题

  • //用datareader把id='2493C2B2F1D34371BCDECDFF6D0E247D'及其子项目的据全都读出来(我在数据库中用了递归)
    OracleDataReader odr_Get_Child_Id = db.execute_Reader("mis_manager", "select id from bumen start with id='2493C2B2F1D34371BCDECDFF6D0E247D' connect by prior id=up_id");
                    string str_In_Id = string.Empty;
                    while (odr_Get_Child_Id.Read()) { str_Bumen_Id += ',' + odr_Get_Child_Id.GetString(0); }
                    if (!odr_Bumen.IsClosed) { odr_Bumen.Close(); }
                    string[] str_In_Id_Collection = str_Bumen_Id.Trim(',').Split(',');
    //取出来后str_In_Id_Collection这个数组明明有9个值:
    str_In_Id_Collection = {string[9]}
    [0]"2493C2B2F1D34371BCDECDFF6D0E247D"
    [1]"4BBDBA04DDBC4A58A57302374A045CBB"
    [2]"2493C2B2F1D34371BCDECDFF6D0E247D"
    [3]"285470122951413F96B85B0664FB63C6"
    [4]"3E22476939F94425B825975ED4FB2E67"
    [5]"65543DB8F97F44C8AF3D0611D37AEA3E"
    [6]"8F5D9BF1B7454D73B70B6B95052D250F"
    [7]"AF489E4D28E44889A0680F7BEC76BA6E"
    [8]"D953F0C14DAC46C1A7F38B7A3CE24214"
    //但是我运行了以下代码后,dr居然为0,郁闷!
    DataRow[] dr = dt.Select("bkhzy in(‘"+str_In_Id_Collection+"’)");//其中dt是datatable,这里面有很多值,我想用in过滤一下。并且dt里面绝对有str_In_Id_Collection中的数据。因为我在sql语句中写select * from 表 where bkhzy in('2493C2B2F1D34371BCDECDFF6D0E247D','D953F0C14DAC46C1A7F38B7A3CE24214')就能查得到。
    2010年2月7日 12:01

答案

  • 哪里有填充dt?
    PS DataTable的SQL查询支持用的是正则表达式,建议在数据库中查询而不是在数据集以利用数据库的索引来加速查询。


    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful.
    Visual C++ MVP
    • 已标记为答案 杜宏宇 2010年2月8日 1:05
    2010年2月7日 14:27
    版主