나에게 소리가 들리는 문제가 있습니다. IDataReader.Read() IDbCommand.CommandText 설정 방법에 따라 다르게 작동하는 것으로 나타났습니다.IDataReader.Read()를 사용하는 동작이 일관되지 않습니다.
'AID'가 설정되어 EntAgencyId()에 전달 된 경우 reader.Read()가 true를 반환하고 프로그램이 while 루프를 입력 할 수 있습니다. 만약 ('455') 함수에 전달하는 동일한 값을 사용하여 EntAgencyId()에서 'query'를 설정했다면 프로그램은 결코 while 루프를 입력 할 수 없습니다 (AID '에서 전달할 때와 동일한 동작이 발생 함). textbox.text).
public string EntAgencyId(string AID)
{
cmd = uasConnection.CreateCommand();
//query = "select * from EnterpriseAgencyTbl where AOCId = " + AID; //<--Works
query = "select * from EnterpriseAgencyTbl where AOCId = 455"; //<--Causes issue
cmd.CommandText = query;
reader = cmd.ExecuteReader();
while (reader.Read())
{
EntAgId = reader["Id"].ToString();
AgencyName = reader["Name"].ToString();
}
reader.Close();
return AgencyName;
}
디버깅 할 때 'query'는 항상 동일한 값을 가지므로이 값이 .Read()와 다른 점은 무엇입니까?
생각을위한 음식 - .Read()는 더 많은 행이 있으면 true를 반환합니다. 그렇지 않으면 false입니다. 이 경우 Item 속성과 GetValue()를 사용하여 첫 번째 행을 읽었을 때 'Object instance not an object'오류가 발생합니다.
나는 아이디어가 완전히 다되었으므로 도움이 될 것입니다.
진단 *이 정확하지 않을 수 있습니다. 하나의 쿼리 문자열이 생성되었으므로 아무 것도 생성되지 않습니다. (물론 SQL의 일부로 텍스트 상자 값을 사용하여 쿼리를 생성하면 안됩니다. 매개 변수가있는 SQL을 대신 사용하십시오.) –
'EntAgencyId'를 호출하는 코드를 추가 할 수 있습니까? – phoog
호기심에서 AOCId 열의 유형은 무엇입니까? 그리고 "455 '라는 문자열 (틱 따옴표 포함)을 함수에 전달하고 있습니까? 또는 "455"? –