2014-10-01 304 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

相关问题