Странно, но никаких записей из базы данных не извлекается.
Всем Привет,
Я столкнулся с большой проблемой с моим запросом select, и я не могу понять ее.
Проблема: Я пытаюсь извлечь записи из таблицы базы данных в течение заданной даты, но никакие записи не возвращаются.
Мой код:
public SQLiteDataReader GetByDate(DateTime start, DateTime end) { SQLiteDataReader reader = null; using (SQLiteDataAdapter _adpt = new SQLiteDataAdapter()) { _adpt.SelectCommand = new SQLiteCommand(); _adpt.SelectCommand.Connection = new SQLiteConnection(ConnectionString); _adpt.SelectCommand.Connection.Open(); _adpt.SelectCommand.CommandType = CommandType.Text; _adpt.SelectCommand.CommandText = Scripts.SalesDetails.GetByDate; Console.WriteLine("Start : {0}", start.ToString("yyyy-MM-dd hh:mm:ss")); Console.WriteLine("end : {0}", end.ToString("yyyy-MM-dd hh:mm:ss")); _adpt.SelectCommand.Parameters.AddWithValue("@start","'"+ start.ToString("yyyy-MM-dd hh:mm:ss")+"'"); _adpt.SelectCommand.Parameters.AddWithValue("@end","'" +end.ToString("yyyy-MM-dd hh:mm:ss")+"'"); reader = _adpt.SelectCommand.ExecuteReader(); //Console.WriteLine(reader.HasRows); } return reader; }
Запрос есть:
public static string GetByDate = "select sd.InvNo sID,cust.ID cID,cust.name name,sd.InvDate, sd.netTotal Total,(sd.netTotal- ct.due) DueAmt,sd.ID from (SalesDetails sd inner join Customers cust on sd.custID =cust.ID ) left join (select sum(amount) due,SalesID from custTrans group by SalesID) ct on sd.ID=ct.SalesID where sd.InvDate between @start and @end";
У меня есть записи на моей таблице, и я запустил тот же код в браузере SQLite, чтобы вернуть записи(как я и ожидал).
пожалуйста, помогите мне с этим..
заранее спасибо.
Что я уже пробовал:
мой запрос SQLite браузер(это прекрасно работает):-
select sd.InvNo sID,cust.ID cID,cust.name name,sd.InvDate, sd.netTotal Total,(sd.netTotal- ct.due) DueAmt,sd.ID from (SalesDetails sd inner join Customers cust on sd.custID =cust.ID ) left join (select sum(amount) due,SalesID from custTrans group by SalesID) ct on sd.ID=ct.SalesID where sd.InvDate between '2017-05-14 11:09:02' and '2017-06-14 11:09:03'
Я также удаляю одинарную кавычку из значения параметра, но ничего не работает..
_adpt.SelectCommand.Parameters.AddWithValue("@start",start.ToString("yyyy-MM-dd hh:mm:ss")); _adpt.SelectCommand.Parameters.AddWithValue("@end",end.ToString("yyyy-MM-dd hh:mm:ss"));