Отображение всей строки, содержащей максимальное значение для определенного поля целочисленного типа. Возвращает ошибку - PullRequest
1 голос
/ 15 июня 2019

Мне нужна некоторая помощь по использованию SQL, мне нужен кто-то со знанием C # / SQL, все, что мне нужно, - это простая строка или, если необходимо, целый код, который имеет только одну цель: отображать только строку с наибольшим числомКликает по таблице Автомобили внутри Gridview / Label, кто-нибудь может дать мне такой код и научить меня?эта проблема касается веб-разработки.

Я уже пытался использовать некоторые коды, которые я предоставлю ниже, но всегда получаю сообщение об ошибке, которое говорит о несоответствии типа критерия или что-то в этом роде.

 //this button is inside a masterpage.cs file    
 protected void Button1_Click(object sender, EventArgs e)    
 {
     string constr = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Server.MapPath("App_Data/DatabaseVSC.accdb");
     localhost.wbCarsDb o = new localhost.wbCarsDb();
     DataSet ds = o.GetMostPopularCar(constr);
     string x  =   (ds.Tables[0].Rows[0]["CLikes"].ToString());
     DataSet ds2 = new DataSet();
     ds2 = o.retDetailsCID_datasetR(x,constr);
     this.GridView2.DataSource = ds2;
     this.GridView2.DataBind();
     this.GridView1.DataSource = ds;
     this.GridView1.DataBind();
 }

 //these are codes used in the code above inside the button,  they're stored inside the main CarsDb class that I use to store all crucial codes
 [WebMethod]
 public DataSet GetMostPopularCar(string connectionstr)
 {
     string querystr = string.Format("SELECT MAX(CLikes) AS LargestLike FROM Cars");
     OleDbConnection connectObj = new OleDbConnection(connectionstr);
     OleDbDataAdapter da = new OleDbDataAdapter(querystr, connectObj);
     DataSet ds = new DataSet();
     da.Fill(ds);
     return ds;
 }

 [WebMethod]
 public DataSet retDetailsCID_datasetR(string CLikes, string connectionstr)
 {
     string constr = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Server.MapPath("App_Data/DatabaseVSC.accdb");
     string querystr = string.Format("SELECT [CID] FROM [Cars] WHERE [CLikes]='{0}'", CLikes);
     OleDbConnection connectObj = new OleDbConnection(connectionstr);
     OleDbDataAdapter da = new OleDbDataAdapter(querystr, connectObj);
     DataSet ds = new DataSet();
     da.Fill(ds);
     return ds;
 }    

Вот что происходит, когда я активирую кнопку:

Столбец 'CLikes' не принадлежит таблице Table.

Описание: во время выполнения возникло необработанное исключениетекущий веб-запрос.Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.

Сведения об исключении: System.ArgumentException: столбец 'CLikes' не принадлежит таблице Table.

Строка 26: localhost.wbCarsDb o = new localhost.wbCarsDb ();Строка 27: DataSet ds = o.GetMostPopularCar (constr);Строка 28:
string x = (ds.Tables [0] .Rows [0] ["CLikes"]. ToString ());Строка 29: DataSet ds2 = new DataSet ();// строка 28 красного цвета

Исходный файл: c: \ Users \ alaas \ OneDrive \ Вложения электронной почты \ Documents \ School \ ComputerProgramming \ VintageSportsCars2 \ MasterPage.master.cs Строка: 28

Трассировка стека:

[ArgumentException: Column 'CLikes' does not belong to table Table.]
   System.Data.DataRow.GetDataColumn(String columnName) +5953463
   System.Data.DataRow.get_Item(String columnName) +13
   MasterPage.Button1_Click(Object sender, EventArgs e) in c:\Users\alaas\OneDrive\Email attachments\Documents\School\ComputerProgramming\VintageSportsCars2\MasterPage.master.cs:28
   System.Web.UI.WebControls.Button.OnClick(EventArgs e) +9782698
   System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +204
   System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +12
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +15
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +35
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1639

Информация о версии: Microsoft .NET Framework Версия: 4.0.30319;ASP.NET версия: 4.7.3282.0

1 Ответ

0 голосов
/ 15 июня 2019

Как ответил @Steve в комментариях -

Вы переименовали CLikes в LargestLike в первом запросе. Вы должны использовать это при чтении из набора данных

И ваш второй запрос, если CLikes - это числовой столбец, то вы должны рассматривать его как число, не преобразующее строку и использующее строку для поиска значений в числовом столбце.


Я добавил это в вики сообщества, чтобы вопрос мог быть решен без ответов, скрытых в комментариях; все кредиты @ Стив.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...