string getGoodsList()
    {
string str="select goodsid,goodsname,goodsunit,goodstype,packname,prodarea,zxcolumn10,approvedocno,varietyname,storageconditionname from pub_goods_v where exists(select present_goods.* from present_goods where present_goods.goodsid = pub_goods_v.goodsid and present_goods.goodsqty>1 and present_goods.companyid=14)";        string strResult="<table>";
        try
        {
            OracleConnection ocn = new OracleConnection(PresentConn.GetConnectionStr());
            OracleCommand ocmd = new OracleCommand(str,ocn);
            ocn.Open();
            OracleDataReader odr = ocmd.ExecuteReader();
            while (odr.Read())
            {
                string strTable = "<tr>";
                for (int i = 0; i < odr.FieldCount; i++)
                {
                    strTable += "<td>" + formatMyString(odr[i].ToString()) + "</td>";
                }
                strTable += "</tr>";
                strResult += strTable;
            }
            ocn.Close();
            strResult += "</table>";
            return strResult;
        }
        catch (Exception Ex)
        {
            string strTemp = Ex.Message;
            return "<DataSet></DataSet>";
        }
    }就这个,没有结果返回,也没有报错,而查询语句在数据库中是可以查出数据来的
高手帮帮忙,这东西弄得我太伤心了

解决方案 »

  1.   

     while (odr.Read()) 
                { 
                    string strTable = " <tr>"; 这句有问题,你每次循环,变量重新new了,原来的值没了建议这样:
    string strTable = "";
      while (odr.Read()) 
                { 
                    strTable += " <tr>"; 
                    for (int i = 0; i < odr.FieldCount; i++) 
                    { 
                        strTable += " <td>" + formatMyString(odr[i].ToString()) + " </td>"; 
                    } 
                    strTable += " </tr>"; 
                    strResult += strTable; 
                } 
      

  2.   

    建议字符串变量如果要经常改变(如追加),建议使用StringBulider对象
      

  3.   

    上面那个没有问题,是我操作失误
    由于我用的OBJECTBROWSER来管理数据库,因为插入的数据还没有提交到数据库,而在OB里面却查得到,我误认为在数据库里也能查得到,已致于其后的难以想象的结果.多谢上面两位大侠