2014-10-01 36 views
2

我「利用遺傳算法的項目時間表Scedualing」 使用C#和SQL Server上的工作..如何從數據庫中獲取數據並將其放入c#中的變量?

我分項目3層(數據訪問層,業務層和接口)

數據訪問層含有:

(構造初始化連接對象的方法,以打開連接的方法,以打開連接的方法,以讀取來自數據庫的數據的方法,插入,更新,從數據庫中刪除數據)

例如:

//方法插入,更新,刪除數據庫中的數據

public void ExecuteCommand(string stored_procedure, SqlParameter[] param) 
     { 
      SqlCommand sqlcmd = new SqlCommand(); 
      sqlcmd.CommandType = CommandType.StoredProcedure; 
      sqlcmd.CommandText = stored_procedure; 
      sqlcmd.Connection = sqlconnection; 
      if (param != null) 
      { 
       sqlcmd.Parameters.AddRange(param); 
      } 
      sqlcmd.ExecuteNonQuery(); 
     } 

業務層中含有類爲每個表單

例如: 「添加表格教授」

ADD_PROF.class ....................

現在,從數據庫中獲取有關教授的所有數據,我創建(GET_ALL_PROF)過程並將此代碼寫入ADD_PROF類

public DataTable GET_ALL_PROF() //copied and pasted down for verfing 
     { 
      DAL.DataAccessLayer DAL = new DAL.DataAccessLayer(); 
      DataTable Dt = new DataTable(); 
      Dt = DAL.SelectData("GET_ALL_PROF", null); 
      DAL.Close(); 
      return Dt; 

     } 

我的問題是...我不知道如何從教授表在數據庫中獲取(教授ID),並把它變成一個變量,它通過在遺傳算法的代碼在C#中?

在SQL程序是

Create proc [dbo].[get_id_PROF] 
as 
select ID_PROF from [dbo].[PROFESSOR] 
+0

使用SqlDataReader ... – 2014-10-01 17:34:55

+0

您應該查看存儲庫。它更現代化,靈活和可維護。 – Jamie 2014-10-01 19:18:27

回答

3

你可以使用一個SqlDataReader從數據庫中讀取數據,並簡單地使用它來從數據庫數據存儲在您的變量。

int professorId; 
private static void ReadOrderData(string connectionString) 
{ 
    string queryString = "select ID_ST from [dbo].[PROFESSOR];"; 
    using (SqlConnection connection = new SqlConnection(connectionString)) 
    using (SqlCommand command = new SqlCommand(queryString, connection)) 
    { 
     connection.Open(); 
     using (SqlDataReader reader = command.ExecuteReader()) 
     { 
      // Call Read before accessing data. 
      if (reader.HasRows()) 
      { 
       reader.Read(); 
       professorId = reader.GetInt32(0); 

       // Call Close when done reading. 
       reader.Close(); 
      } 
     } 
    } 
} 

或者你可以試試這個使用存儲過程:

int professorId; 
using (SqlConnection sqlConnection1 = new SqlConnection("Your Connection String")) 
using (SqlCommand cmd = new SqlCommand()) 
{ 
    cmd.CommandText = "StoredProcedureName"; 
    cmd.CommandType = CommandType.StoredProcedure; 
    cmd.Connection = sqlConnection1; 
    sqlConnection1.Open(); 

    using (SqlDataReader reader = cmd.ExecuteReader()) 
    { 
     // Data is accessible through the DataReader object here. 
     reader.Read(); 
     professorId = reader.GetInt32(0); 
    } 
} 
+0

實體框架是SqlDataReader的繼承者。它會爲你做很多工作,所以你可以專注於重要的事情,而不是sql連接。 – 2014-10-01 19:37:10

+0

行..謝謝你這麼多兄弟:) – 2014-10-02 08:40:56

相關問題