2014-12-11 2 views
0

안녕하십니까 시간 내 주셔서 감사합니다. 내 데이터베이스에서 특정 기준에 따라 ID 목록을 가져 오는 Sqldatasource가있는 경우이 목록을 코드 뒤에 쉼표로 구분 된 문자열 형식으로 어떻게 호출 할 수 있습니까? 예를 들어, 내가 사용하고 쿼리라고 :sqldatasource의 결과를 코드 뒤에 쉼표로 구분 된 문자열로 수집하려면 어떻게해야합니까?

SELECT ID FROM MyDatabase WHERE Email <> '' 

결과 존재 : 쉼표 다음과 같은 후행 쉼표로 구분 된 목록으로 난 뒤에 코드에서 그에게 전화를 호출하는 방법을

| ID | 
    ------ 
    | 16 | 
    | 2 | 
    | 81 | 
    | 4 | 

?

은 데이터 테이블의 데이터를 입력하고 루프 CONCAT 문자열을 사용하여 각 데이터에 액세스 :

16,2,81,4 
+0

. 또한 Dataview에 데이터 소스를 연결하고 [이 방법을 사용]했습니다. (http://msdn.microsoft.com/en-us/library/system.data.dataview.sort%28v=vs.110%29.aspx). 나는 그것을 제대로 작동시키지 못했습니다. 편집 : 감사합니다 Pleun, 나는 그 빠른 검색을 제공합니다! – Control

답변

1

하면이 (코드의 경우 뒤에)보십시오.

For iRowIdx = 0 To dtblData.Rows.Count - 1 
    Result += dtblData.Rows(iRowIdx)("ID") + ',' 
Next 

대신 당신은 SQL에서 값을 결합 할 수 있습니다 : 당신이 할 수있는

SELECT 
    STUFF(
     (SELECT ',' + CAST(ID as varchar(max)) 
     FROM (SELECT ID 
     FROM MyDatabase) AS B FOR 
      XML PATH(''), TYPE).value('.', 'VARCHAR(MAX)'), 1, 1, '') 
    AS ExpectedResult 
1

한가지는 Datareader를 사용하는 것입니다. 이렇게하면 쿼리에서 반환되는 레코드를 차례로 돌아보고 코드의 모든 값에 액세스 할 수 있습니다. 당신은 다음과 같이 사용할 수 있습니다

,

그때 String.Join를 사용하여 배열로 퍼팅 시도했지만, 그것은 내가 원하는 방법을 오지 않았다
command = new sqlcommand("Select ID from [Test]", conn) 
    datareader = command.ExecuteReader() 
    While datareader.Read() 
     'Access the Columns here 
    End While 
관련 문제