数据存在,但我的程序说"行/列没有数据"

时间:2016-09-26 08:28:58

标签: c#

请指导我如何解决此问题。

    if (Convert.ToInt32(rd["B_Quan"].ToString()) > 3)
    {
        MessageBox.Show("Oops sobra tama na ");
    }
    cn.Close();

2 个答案:

答案 0 :(得分:0)

行/列要么不存在要么包含null。 在这种情况下,您会收到NullReferenceException,因为null没有功能.ToString()

你可以检查一下:

if (rd.Table.Columns.Contains("B_Quan") && rd["B_Quan"] != null)
{
    if (Convert.ToInt32(rd["B_Quan"].ToString()) > 3)
    {
        MessageBox.Show("Oops sobra tama na ");
    }
}
cn.Close();

这是做什么的?

using (DataTable dt = new DataTable())
{
    dt.Load(rd);
    Console.WriteLine(dt.Rows.Count);
}
if (Convert.ToInt32(rd["B_Quan"].ToString()) > 3)
{
    MessageBox.Show("Oops sobra tama na ");
}

调试时,您可以打开dt并查看表格吗?如果有一个名为" B_Quan"?

的列

答案 1 :(得分:0)

我不知道您在问题中删除代码的原因。

为了这个问题,我从编辑历史中复制了你的代码。

我认为,您在代码中收到“无数据”的原因是因为您还没有使用SqlDataReader.Read()。有关详细信息,请参阅SqlDataReader Class

<强>示例:

    while(rd.Read()) // You need to read first to get your data.
    {
        if (Convert.ToInt32(rd["B_Quan"].ToString()) > 3)
        {
            MessageBox.Show("Oops sobra tama na ");
        }
    }

您编码:

private void button3_Click(object sender, EventArgs e)
{
    if (cn.State == ConnectionState.Closed)
    {
        cn.Open();
    }  
    string student = "Select * From tbl_student";

    OleDbCommand loadstudent = new OleDbCommand(student, cn);
    loadstudent.Parameters.AddWithValue("@SId", textBox8.Text + "%");

    rd = loadstudent.ExecuteReader();

    if (rd.HasRows == true)
    {
        // ipapalabas ung labas
        while (rd.Read())
        {

        messageBox.Show("Oops sobra tama na ");

        }
    }
    else
    {
        MessageBox.Show("No record(s) found.");
    }
    cn.Close();

    if (cn.State == ConnectionState.Closed)
    {
        cn.Open();
    }
    string s = "Select * From Borrow";

    OleDbCommand sa = new OleDbCommand(s, cn);
    loadstudent.Parameters.AddWithValue("@SId", textBox8.Text + "%");

    rd = sa.ExecuteReader();

    while(rd.Read()) // You need to read first to get your data.
    {
        if (Convert.ToInt32(rd["B_Quan"].ToString()) > 3)
        {
            MessageBox.Show("Oops sobra tama na ");
        }
    }
    cn.Close();

    if (cn.State == ConnectionState.Closed) cn.Open();

    cmd = new OleDbCommand("Select * From Borrow", cn);
    rd = cmd.ExecuteReader();// ipapalitaw
    if (rd.HasRows == true)
    {
        // ipapalabas ung labas
        while (rd.Read())
        {
            if (Convert.ToInt32(rd["B_Quan"].ToString()) > 3)

            {
                MessageBox.Show("Oops sobra tama na ");
                return;

            }
        }
    }
}