복붙노트

[SQL] 어떻게 DataTable의에서 데이터를 추출합니까?

SQL

어떻게 DataTable의에서 데이터를 추출합니까?

나는 로컬 데이터베이스에 대한 SQL 쿼리에서 채워집니다 DataTable에있는,하지만 난 그것을에서 데이터를 추출하는 방법을 모르겠어요. (테스트 프로그램에서) 주요 방법 :

static void Main(string[] args)
{
    const string connectionString = "server=localhost\\SQLExpress;database=master;integrated Security=SSPI;";
    DataTable table = new DataTable("allPrograms");

    using (var conn = new SqlConnection(connectionString))
    {
        Console.WriteLine("connection created successfuly");

        string command = "SELECT * FROM Programs";

        using (var cmd = new SqlCommand(command, conn))
        {
            Console.WriteLine("command created successfuly");

            SqlDataAdapter adapt = new SqlDataAdapter(cmd);

            conn.Open(); 
            Console.WriteLine("connection opened successfuly");
            adapt.Fill(table);
            conn.Close();
            Console.WriteLine("connection closed successfuly");
        }
    }

    Console.Read();
}

내 데이터베이스에서 테이블을 만드는 데 사용되는 명령 I :

create table programs
(
    progid int primary key identity(1,1),
    name nvarchar(255),
    description nvarchar(500),
    iconFile nvarchar(255),
    installScript nvarchar(255)
)

어떻게 사용하는 것이 의미있는 형태로 DataTable의에서 데이터를 추출 할 수 있습니까?

해결법

  1. ==============================

    1.DataTable의 DataRow를이 소자들의 컬렉션 .Rows있다.

    DataTable의 DataRow를이 소자들의 컬렉션 .Rows있다.

    각각의 DataRow는 데이터베이스에 하나의 행에 해당하고, 컬럼의 컬렉션을 포함합니다.

    하나의 값에 액세스하기 위해이 같은 일을 할 :

     foreach(DataRow row in YourDataTable.Rows)
     { 
         string name = row["name"].ToString();
         string description = row["description"].ToString();
         string icoFileName = row["iconFile"].ToString();
         string installScript = row["installScript"].ToString();
     }
    

    즙을 짜고 난 찌꺼기

  2. ==============================

    2.당신은 많은 요소에 대한 데이터 소스로 데이터 테이블을 설정할 수 있습니다.

    당신은 많은 요소에 대한 데이터 소스로 데이터 테이블을 설정할 수 있습니다.

    예 :

    GRIDVIEW

    연발총

    DataList에

    등 등

    각 행에서 데이터를 추출해야하는 경우 당신은 사용할 수 있습니다

    table.rows[rowindex][columnindex]
    

    또는

    당신은 열 이름을 알고있는 경우

    table.rows[rowindex][columnname]
    

    당신이 반복 표를해야하는 경우 다음 중 하나를 루프 나 foreach 루프 등을 위해 사용할 수 있습니다

    for ( int i = 0; i < table.rows.length; i ++ )
    {
        string name = table.rows[i]["columnname"].ToString();
    }
    
    foreach ( DataRow dr in table.Rows )
    {
        string name = dr["columnname"].ToString();
    }
    
  3. ==============================

    3.이 같은 일부 코드를 사용하는 것을 고려하십시오 :

    이 같은 일부 코드를 사용하는 것을 고려하십시오 :

    SqlDataReader reader = command.ExecuteReader();
    int numRows = 0;
    DataTable dt = new DataTable();
    
    dt.Load(reader);
    numRows = dt.Rows.Count;
    
    string attended_type = "";
    
    for (int index = 0; index < numRows; index++)
    {
        attended_type = dt.Rows[indice2]["columnname"].ToString();
    }
    
    reader.Close();
    
  4. ==============================

    4.DataTable의에서 데이터를 추출하는 가장 간단한 방법은 여러 데이터 유형 (단지 문자열)가 어셈블리 System.Data.DataSetExtensions에서 사용할 수있는 필드 확장 방법을 사용하는 것입니다.

    DataTable의에서 데이터를 추출하는 가장 간단한 방법은 여러 데이터 유형 (단지 문자열)가 어셈블리 System.Data.DataSetExtensions에서 사용할 수있는 필드 확장 방법을 사용하는 것입니다.

    var id = row.Field<int>("ID");         // extract and parse int
    var name = row.Field<string>("Name");  // extract string
    

    MSDN에서, 필드 방법

    당신이 유형을 지정할 때 확인하고 객체를 언 박싱 것이 의미합니다.

    예를 들면 :

    // iterate over the rows of the datatable
    foreach (var row in table.AsEnumerable())  // AsEnumerable() returns IEnumerable<DataRow>
    {
        var id = row.Field<int>("ID");                           // int
        var name = row.Field<string>("Name");                    // string
        var orderValue = row.Field<decimal>("OrderValue");       // decimal
        var interestRate = row.Field<double>("InterestRate");    // double
        var isActive = row.Field<bool>("Active");                // bool
        var orderDate = row.Field<DateTime>("OrderDate");        // DateTime
    }
    

    또한 nullable 형식을 지원합니다 :

    DateTime? date = row.Field<DateTime?>("DateColumn");
    

    이것은 명시 적으로 올바른 유형으로 변환하거나 개체를 구문 분석 할 필요가 제거로 DataTable의에서 데이터를 추출 단순화 할 수 있습니다.

  5. ==============================

    5.당신은 원시 ado.net을 할 수있는 특별한 이유가없는 한 내가 SQL로 NHibernate에 또는 Linq에 같은 ORM (객체 관계형 매퍼)를 사용하여 살펴 것이다. 그 방법은 작업에 데이터베이스와 retreive 오브젝트있는 강력하게 형식화되고 이럴와 작업을 쉽게 조회 할 수 있습니다.

    당신은 원시 ado.net을 할 수있는 특별한 이유가없는 한 내가 SQL로 NHibernate에 또는 Linq에 같은 ORM (객체 관계형 매퍼)를 사용하여 살펴 것이다. 그 방법은 작업에 데이터베이스와 retreive 오브젝트있는 강력하게 형식화되고 이럴와 작업을 쉽게 조회 할 수 있습니다.

    콜린 G

  6. ==============================

    6.

      var table = Tables[0]; //get first table from Dataset
      foreach (DataRow row in table.Rows)
         {
           foreach (var item in row.ItemArray)
             {
                console.Write("Value:"+item);
             }
         }
    
  7. ==============================

    7.제발, 데이터 어댑터를 사용하는 경우 열고 닫기 연결이 필요하지 않습니다.

    제발, 데이터 어댑터를 사용하는 경우 열고 닫기 연결이 필요하지 않습니다.

    나는 제안이 코드를 업데이트하고 개방하고 연결의 확대를 제거하십시오 그래서 :

            SqlDataAdapter adapt = new SqlDataAdapter(cmd);
    
            Console.WriteLine("connection opened successfuly");
            adapt.Fill(table);
    
            Console.WriteLine("connection closed successfuly");
    

    참조 문서

  8. from https://stackoverflow.com/questions/1346132/how-do-i-extract-data-from-a-datatable by cc-by-sa and MIT license