2014-04-15 179 views
1

其實我的代碼是假設檢查course_choice_teacher表中是否有任何值。如果沒有,那麼它會在表中插入一些值。現在這個時候表中沒有價值。所以dr2.Read()應該返回false並執行else部分。但它正在做相反的事情。如果你幫助我達到這個目的,我會非常高興。爲什麼這個插入不工作?`

string oradb = "Data Source=localhost;User Id=system;Password=cse;"; 
OracleConnection conn = new OracleConnection(oradb); // C# 
conn.Open(); 

OracleCommand cmd2 = new OracleCommand(); 
cmd2.Connection = conn; 
cmd2.CommandText = "select * from course_choice_teacher where teacher_id='"+teacher_home.st+"' and choice_no=1"; 
cmd2.CommandType = CommandType.Text; 

OracleDataReader dr2 = cmd2.ExecuteReader(); 

if (dr2.Read()) 
{ 
    MessageBox.Show("Already Given"); 
} 
else 
{ 
    OracleCommand cmd = new OracleCommand(); 
    cmd.Connection = conn; 
    cmd.CommandText = "insert into course_choice_teacher values('" + teacher_home.st + "','" + dataGridView1.CurrentRow.Cells["course_id"].Value.ToString() + "',1)"; 
    cmd.CommandType = CommandType.Text; 

    OracleDataReader dr = cmd.ExecuteReader(); 
    dr.Read(); 
} 

conn.Dispose(); 
+1

也許我的眼睛在欺騙我,但數據庫名稱在哪裏指定?我有一段時間沒有碰到Oracle,但通常ConnectionStrings的數據庫名稱都在其中。 –

回答

0

datareader具有property.HasRows來檢查結果是否有一些行。這將是一個檢查你打算做什麼的正確方法。

if (dr2.HasRows) 
{ 
    MessageBox.Show("Already Given"); 
} 
else 
{ 
    ......... 
} 
+0

實現它的另一種方法是對count(*)執行查詢並檢查返回結果,因爲您沒有對從select * – PraveenB