Nie programuję zawodowo, bardziej hobbystycznie tworze narzędzia do swojej codziennej pracy.
Zapytania dostaje gotowce od "bazodanowcow" (tylko SELECT'y) z resztą "walczę sam".
Z "ConnectionStringa" kórego używam do tej bazydanych, bezproblemowo pobieram dane dla takiego zapytania:
string zapytanie_ZwracaWgraneProgramyWgZapisow =
$@"SELECT
Data as PROGRAM
FROM
iBaza.dbo.GeneralData GD WITH(NOLOCK)
INNER JOIN
iBaza.dbo.LogData LD WITH(NOLOCK) ON LD.ID = GD.ID
WHERE
GD.DataRemoved = 0
AND
LD.DataRemoved = 0
AND
GD.UID = {UID}
AND
LD.EventID IN(32, 33, 88, 89, 78, 79, 52, 496)";
Obecnie mam takie dwa zapytania, poniżej będę się do nich odnosił skrótowo jako "te krótkie" i "te długie".
Podejrzewam ze błąd i wyjątek mogą mieć wspólne źródło, ale nie wiem tego, prosiłbym o podpowiedzi.
I nakierowanie czy problem leży po tylko po stronie SQL (tak wynika z tego co odnajduje w internecie)? Czy mogę go rozwiązać po stronie C#?
string zapytanie_ZwracaUIDyZZapisanyumidoNichProgramami =
$@"SELECT
UID,
iBaza.dbo.SumStrSep(LD.Data, ',') AS PROGRAM
FROM
iBaza.dbo.GeneralData GD WITH(NOLOCK)
INNER JOIN
iBaza.dbo.LogData LD WITH(NOLOCK) ON LD.ID = GD.ID
WHERE
GD.DataRemoved = 0
AND
LD.DataRemoved = 0
AND
GD.ProductionNo = '{nrzlecenia}'
AND
LD.EventID IN (32, 33, 88, 89, 78, 79, 52, 496)
GROUP BY UID";
string zapytanie_zwracaUIDy =
$@"SELECT
UID
FROM
iBaza.dbo.GeneralData WITH(NOLOCK)
WHERE
ProductionNo = '{nrzlecenia}'
AND
DataRemoved = 0";
pobieram dane tak: (breakpointa stawiam w linii 12 i tam podglądam co jest zwracane w "OleDbDataReader")
List<string> listaOdczytanych = new List<string>();
OleDbDataReader reader;
using (OleDbConnection connection = new OleDbConnection(connectionString_iPlanista))
{
OleDbCommand command = new OleDbCommand(zapytanie_ZwracaUIDyZZapisanyumidoNichProgramami);
command.Connection = connection;
try
{
connection.Open();
reader = command.ExecuteReader();
while (reader.Read())
{
listaOdczytanych.Add(((IDataRecord)reader)[0].ToString());
}
}
catch (Exception ex)
{
throw new Exception($"Coś poszło nie tak z odczytywaniem z bazy danych {connectionString_iPlanista}" + Environment.NewLine +
$", w metodzie: {nameof(PlanistaReader.ZwrocNazwyProgramowZZapisow)}", ex);
}
}
W przypadku "krótkiego" zapytania "OleDbCommand" wykonuje się a w linii 16 podglądając zawartość "OleDbDataReader" mam coś jak niżej:
nie rozumiem co się dzieje od linii [30] co oznacza bład CS0726 - prosiłbym o podpowiedzi i nakierowanie.
W przypadku "dłuższego" zapytania "OleDbCommand" nie wykonuje się tylko rzuca wyjątek jak niżej:
Również nie wiem co to oznacza - prosiłbym o podpowiedzi i nakierowanie. Oraz czy oba te problemy mają wspólne źródło.