세상에, 나는 약간의 문제가 있습니다.
1)) 데이터베이스
2에서 예술가의 목록을 읽어 그 작가 및 저장에 의해 작성된 모든 트랙을 찾기 : 아니, 이건 아니다 '숙제'DataReader는 행을 반환하지 않습니다. 행은 데이터베이스에 있습니다.
나는 두 가지 작업을 수행해야하는 몇 가지 코드를 가지고 그것을 위해 나중에
내가 뭘하는지 :
1) SELECT ArtistID FROM artists
내 아티스트의 목록을 가져옵니다. 내가 수동으로 ArtistID
을 지정하면 두 번째 선택 문이 성공
: 나는 DataReader
사용하여 List<string>
데이터 타입에서 그것을 구축 등
2) SELECT count(*) as track_numbers from tracks WHERE ArtistID = @ArtistID
그렇게 큰
내 문제 작동하지 않습니다 좋은 작품 (예 : SELECT count(*) as track_numbers FROM Tracks WHERE ArtistID = 0
작동)하지만 내 목록을 반복 할 경우 항상 0 개의 결과가 반환됩니다. 내가 커넥터를 사용하고
/네트 6.3.6, 비주얼 스튜디오 2010 (모든 업데이트), .NET 4.0 클라이언트 프로파일, 의 MySQL 커뮤니티 서버 5.5.9 64, 윈도우 7 홈 프리미엄 x64
가 나는 시도했다 :
- ArtistID 순 내 쿼리 문자열을 구축하는 문자열 연결을 사용하여 다음 문자열로 int를 ArtistID 순 캐스팅
- 다음, 그 반대의
- 재 배열 매개 변수가 정의되는 경우, 넣어 값,
관련 명령 텍스트 (내 생각) 아래 코드 :
List<string> list = new List<string>();
Hashtable table = new Hashtable();
DbProviderFactory factory = DbProviderFactories.GetFactory(setting.ProviderName);
using (DbConnection conn = factory.CreateConnection())
{
conn.ConnectionString = setting.ConnectionString;
conn.Open();
using (DbCommand cmd = conn.CreateCommand())
{
cmd.CommandType = CommandType.Text;
cmd.CommandText = "SELECT ArtistID FROM artists;";
using (DbDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
list.Add(reader["ArtistID"].ToString()); //this works, and I can iterate no problem through this list
}
}
}
using (DbCommand cmd = conn.CreateCommand())
{
cmd.CommandType = CommandType.Text;
cmd.CommandText = "SELECT count(*) as counts FROM tracks WHERE ArtistID = @ArtistID;";
//cmd.CommandText = "SELECT count(*) as counts FROM tracks WHERE ArtistID = 0;"; <-- this line works
DbParameter param = cmd.CreateParameter();
param.ParameterName = "@ArtistID";
foreach (string artist in list)
{
param.Value = artist;
cmd.Parameters.Add(param);
using (DbDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
Console.WriteLine(artist + "\t" + reader["counts"]); //reader["counts"] is always '0'
}
cmd.Parameters.Clear();
}
}
}
}
데이터베이스 테이블 형식은 다음과 같습니다 아티스트가 하나 개의 값/키 ArtistID
불렀다 입력 int
개 트랙은 세 개의 열, TrackID (int, pk)
, artistid (int)
, albumid(int)
어떤 제안이? 감사.
루프를 시작하기 전에'HasRows' 속성을 확인할 수 있습니까? 데이터 소스에서 검색이 실제로 작동하는지 또는 잘못된지 확인하십시오. –