2016-09-26 46 views
-2

請指導我如何解決此問題。數據存在,但我的程序說「沒有數據存在行/列」

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

有什麼錯誤? –

+1

請閱讀[如何提出一個好問題](http://stackoverflow.com/help/how-to-ask) – 3615

+4

你已經提供了很多代碼,並沒有說明究竟發生了什麼,你在做什麼預計會發生,或者迄今爲止經歷了什麼診斷。請閱讀https://codeblog.jonskeet.uk/2010/08/29/writing-the-perfect-question/ –

回答

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」的列?

+0

這個條件將是無用的,因爲我確信'rd ['B_Quan']'將返回null ,直到執行'SqlDataReader.Read()' –

+1

在Leonel指出有編輯歷史記錄之前,代碼中沒有'SqlDataReader'你做到了。你試過了嗎?因爲如果你確信它將是空的,那麼'&& rd [「B_Quan」]!= null'將會捕捉到。 – DerpyNerd

+0

我保證,因爲不執行'SqlDataReader.Read()'rd [「B_Quan」]將不會檢索任何數據,並且它將毫無意義,因爲即使有數據,也不能在列中獲取任何數據在它裏面......我希望我能嘗試它。 –

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; 

      } 
     } 
    } 
} 
+0

對不起,先生。感謝您的幫助@LeonelSarmiento – Bajongjong

相關問題