SQLREADER与搜索

时间:2013-06-09 12:47:43

标签: c# sql

//Creating Data Reader Components
string str_ClientID;
string str_Occupation;
string strCompany;

public void Read_Out_Clients(string company)
{ 
    //Specify the parameter search criteria
    sqlComLoad.Parameters["@company"].Value = company;

    sqlCon.Open(); // open database connection

    // create database reader to read information from database
    SqlDataReader objReader = sqlComLoad.ExecuteReader();

    // retrieve 
    // information from database
    //<--This Errors saying there is not data in the data base 
    //Suppose to return the ClientID field data All field names are correct
    str_ClientID = Convert.ToString(objReader["ClientID"]);      

    //suppose to return the Occupation field data 
    str_Occupation = Convert.ToString(objReader["Occupation"]);

    objReader.Close(); // close data reader connection
    sqlCon.Close(); // close database connection
}

//This is the returning value to the method
private void cboCompany_SelectedIndexChanged(object sender, EventArgs e)
{
    strCompany = cboCompany.SelectedItem.ToString();
    if(strCompany != "")
    {
        //Read out companys selected related fields from clients
        Read_Out_Clients(strCompany);

        //Add those related fields to specifics
        cboClientID.Items.Add(str_ClientID); <--this is what the reader is supposed to return
        txtOccupation.Text = str_Occupation; 
    }
}

任何帮助简化这款阅读器的帮助都会很棒!多谢你们 此代码用于读取数据字段公司与查询搜索匹配的数据字段 标准 它适用于Access数据库,但由于某种原因它不能使用SQL查询。它应该工作我在SQL查询执行器中测试它,它返回数据,但当我运行阅读器时,它返回应用程序级别的错误,它说:“当没有数据存在时无效的读取尝试”;但是有数据它返回SQL查询执行器中的数据所以我很困惑请帮助再次感谢。

1 个答案:

答案 0 :(得分:2)

在使用SqlDataReader(或由DbDataReder派生的任何类实例)之前,您需要调用方法

 if(objReader.Read())
 {
    ... read the fields
 }

并检查它是否返回true 只有在此之后,您的objReader才会位于查询检索到的第一条记录上。