2014-01-05 22 views
0
string conString = @"Provider=Microsoft.ACE.OLEDB.12.0; 
      Data Source=C:\Users\user\Documents\Visual Studio 2010\Projects\Timetable\Timetable\bin\Debug\timetabledata.accdb"; 

//create the database query 
string query = "SELECT * FROM relation"; 

OleDbConnection conn = new OleDbConnection(conString); 
conn.Open(); 

// create the DataSet 
DataSet ds = new DataSet(); 

// create the adapter and fill the DataSet 
OleDbDataAdapter adapter; 
adapter = new OleDbDataAdapter(query, conn); 
adapter.Fill(ds); 

int f = ds.Tables[0].Rows.Count; 
int i; 
for (i = 0; i < f; i++) 
    { 
    // create the database query 
    string query1 = "SELECT * FROM [time] Where classid= '"+ 
           ds.Tables[0].Rows[i].ItemArray[2]+"'"; 
    DataSet ds1 = new DataSet(); 
    OleDbDataAdapter adapter1; 
    adapter1 = new OleDbDataAdapter(query1, conn); 
    adapter1.Fill(ds1); 
    MessageBox.Show(ds1.Tables[0].Rows[0].ItemArray[0].ToString()); 
    } 

結果,我得到的不是在消息框中真的,我想具有相同的classid但在消息框,輸入輸出之前只使用到驗證繼續我看到的所有行的id時間表的無ID來考慮,其中使用凡在我插入查詢語句

+1

http://meta.stackexchange.com/questions/10647/how-do -i-write-a-best-title –

+0

不要以爲SQL引擎在這裏有問題。它很可能是你在代碼中的某個地方做出了錯誤的假設。做一些調試來找出什麼。檢查運行時查詢,使用和不使用'WHERE'子句手動對數據庫運行該查詢,檢查結果。在不瞭解數據的情況下,我們不可能知道這些值應該在哪裏。 – David

+0

謝謝..我做但沒有結果..我再試一次 – Ghadir

回答

1

不應該把這一部分被改變......

string query1 = "SELECT * FROM [time] Where classid+ '"+ 
           ds.Tables[0].Rows[i].ItemArray[2]+"'"; 

到...

string query1 = "SELECT * FROM [time] Where classid = '"+ 
           ds.Tables[0].Rows[i].ItemArray[2]+"'"; 

您似乎正在使用加號(+)而不是等號(=)。

+0

我編輯..它不是問題..我寫在我的代碼中正確 – Ghadir

+0

這絕對是問題之一,'ds.Tables [0] .Rows [i] .ItemArray [2]''的值是什麼? – christiandev

+0

它的每個'我'的分類我有一個值:1-4-5-7-4-3-1 – Ghadir

0

這給一個鏡頭:

public DataSet GetRelations() 
{ 
    using (var connection = new OleDbConnection(ConnectionString)) 
    { 
     connection.Open(); 
     using (var adapter = new OleDbDataAdapter("SELECT * FROM [relation]", connection)) 
     { 
      var results = new DataSet(); 
      adapter.Fill(results); 
      return results; 
     } 
    } 
} 

public DataSet GetTimeResults() 
{ 
    DataSet dsRelations = GetRelations(); 

    var dsResults = new DataSet(); 
    using (var connection = new OleDbConnection(ConnectionString)) 
    { 
     connection.Open(); 

     foreach (DataRow row in dsRelations.Tables[0].Rows) 
     { 
      using (var command = new OleDbCommand("SELECT * FROM [time] Where classid = ?", connection)) 
      { 
       // not entirey sure what the value of row.ItemArray[2] is ? 
       command.Parameters.Add(row.ItemArray[2]); 
       using (var adapter = new OleDbDataAdapter(command)) 
       { 
        adapter.Fill(dsResults); 
       } 
      } 
     } 
    } 
    return dsResults; 
} 

就調用它,使用它,你認爲合適:

public void Test() 
{ 
    DataSet dsTimeResults = GetTimeResults(); 
    // Do whatever you need with the results 
}