powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как исправить ошибку?
15 сообщений из 15, страница 1 из 1
Как исправить ошибку?
    #34497934
Оксана Н
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В университете по дисциплине «Базы данных» задали задание. Суть его заключается в том, что необходимо построить корпоративный Интернет-сайт. В базе данных имеются следующие таблицы: Customers (покупатели), Products (товары), Categories (категории товаров), Orders (заказы), Orders_Details (детали заказов).

При тестировании приложений возникает ошибка:
System.Web.Services.Protocols.SoapException: Server was unable to process request. ---> System.Data.SqlClient.SqlException: Invalid column name 'NameCategory'. at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream) at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior) at System.Data.SqlClient.SqlCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior) at System.Data.Common.DbDataAdapter.FillFromCommand(Object data, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet) at Baza.Service1.GetCategories(String CUSTOMERID, String PASS) in c:\inetpub\wwwroot\Baza\Service1.asmx.vb:line 72 --- End of inner exception stack trace ---

При этом, если удалить следующую часть программного кода, то все работает, но не заружается DropDownList.
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
If Not IsPostBack Then
Dim ws As New localhost.Service1()
Dim dsOrders As New DataSet()
Dim dsDetais As New DataSet()
Dim log, pass As String
Dim orderid As String
log=Session. Item("login")
pass=Session.Item("pass")
dsOrders.Merge (ws.GetOrders(log, pass)) - ошибка возникает из-за этой строки
DropDownList1.DataSource=dsOrders
DropDownList1.DataMember="Orders"
DropDownList1.AutoPostBack=True
DropDownList1.DataTextField="OrderID"
DropDownList1.DataBind()
orderid=DropDownListl.SelectedItem.Value
dsDetais.Merge(ws.GetDetails(log, pass, orderid))
DataGrid1.DataSource=dsDetais
DataGrid1.DataBind()
Session.Item("OrderID")=orderid
End If
End Sub
...
Рейтинг: 0 / 0
Как исправить ошибку?
    #34497936
Katrinmc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А что делается в функции GetOders(...)? Можно ее текст увидеть?
...
Рейтинг: 0 / 0
Как исправить ошибку?
    #34497938
Оксана Н
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
<WebMethod()> Public Function GetOrders (ByVal CUSTOMERID As String, ByVal PASS As String) As DataSet
Dim Orders As New DataSet
Dim user As Boolean
user = CustomerEnter (CUSTOMERID, PASS)
If user Then
SqlSelectCommand4.Parameters("@CustomerID").Value = CUSTOMERID
OrdersSqlDataAdapter.Fill(Orders)
End If
Return Orders
End Function
...
Рейтинг: 0 / 0
Как исправить ошибку?
    #34497941
Katrinmc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нужно порверить текст команды в sqlSelectCommand, вы уверены, что в таблице базы данных из которой берутся данные есть поле с именем NameCategory?
...
Рейтинг: 0 / 0
Как исправить ошибку?
    #34497946
Оксана Н
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да. Уверена, что есть. Но проблема в том, что поле называется CategoryName.
Текст команды в sqlSelectCommand следующий:
SELECT CategoryID, CategoryName
FROM Categories
...
Рейтинг: 0 / 0
Как исправить ошибку?
    #34497951
Katrinmc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно еще на сервере запустить профайлер и посмотреть какой именно запрос приходит на сервер при попытке выполнить Fill в вашем DataAdapter.
...
Рейтинг: 0 / 0
Как исправить ошибку?
    #34497957
Оксана Н
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А не подскажите как это сделать (как запустить профайлер)?
...
Рейтинг: 0 / 0
Как исправить ошибку?
    #34497961
Katrinmc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сервер у вас на машине стоит? Тогда в меню пуск есть группа Microsoft SQL Server -> Profiler
...
Рейтинг: 0 / 0
Как исправить ошибку?
    #34497972
Оксана Н
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А дальше что делать, когда я его запустила?
...
Рейтинг: 0 / 0
Как исправить ошибку?
    #34497991
Оксана Н
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если я все сделала правльно... Результат получился следующий...

exec sp_executesql N'SELECT CustomerID, CompanyName, Pass FROM Customers WHERE (CustomerID = @CUSTOMERID)', N'@CUSTOMERID varchar(5)', @CUSTOMERID = default
...
Рейтинг: 0 / 0
Как исправить ошибку?
    #34498011
Оксана Н
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Давайте посмотрим на эту задачу сначала. Я запускаю первую форму (default.asmx) и регистрируюсь, т.е. ввожу имя и пароль. Далее я должна попасть на вторую форму main.asmx, в которой я могу посмотреть заказы. Но проблема в том, что выскакивает ошибка

System.Web.Services.Protocols.SoapException: Server was unable to process request. ---> System.Data.SqlClient.SqlException: Invalid column name 'NameCategory'. at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream) at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior) at System.Data.SqlClient.SqlCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior) at System.Data.Common.DbDataAdapter.FillFromCommand(Object data, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet) at Baza.Service1.GetCategories(String CUSTOMERID, String PASS) in c:\inetpub\wwwroot\Baza\Service1.asmx.vb:line 72 --- End of inner exception stack trace ---

Если посмотреть в SQL Profiler, то там будет сообщение следующего содержания: SELECT CategoryID, NameCategory FROM Categories.

При этом, если не писать в программном коде в форме main.asmx этот кусок:
If Not IsPostBack Then
Dim ws As New localhost.Service1
Dim ds As New DataSet
Dim log, pass As String
log = Session.Item("login")
pass = Session.Item("pass")
ds.Merge(ws.GetCategories(log, pass))
DropDownList1.DataSource = ds
DropDownList1.DataMember = "Categories"
DropDownList1.AutoPostBack = True
DropDownList1.DataTextField = "CategoryName"
DropDownList1.DataValueField = "CategoryID"
DropDownList1.DataBind()
End If

то у меня открывается форма с заказами, но при этом она не заполняется данными. А в SQL Profiler пишется: exec sp_executesql N'SELECT CustomerID, CompanyName, Pass FROM Customers WHERE (CustomerID = @CUSTOMERID)', N'@CUSTOMERID varchar(5)', @CUSTOMERID = '10357'

Но затем, когда я щелкаю по кнопке "заказать" и по идее я должна перейти на следующую форму zakaz.asmx, в которой я могу сформировать заказ товара, выдается ошибка:

System.Web.Services.Protocols.SoapException: Server was unable to process request. ---> System.Data.SqlClient.SqlException: Invalid object name 'Order Details'. at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream) at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior) at System.Data.SqlClient.SqlCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior) at System.Data.Common.DbDataAdapter.FillFromCommand(Object data, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet) at Baza.Service1.GetDetails(String CUSTOMERID, String PASS, Int32 OrderID) in c:\inetpub\wwwroot\Baza\Service1.asmx.vb:line 136 --- End of inner exception stack trace ---

А в SQL Profiler пишется: exec sp_executesql N'SELECT [Order Details].OrderID, [Order Details].ProductID, Products.ProductName, [Order Details].Price, [Order Details].Quantity, Products.ProductID AS Expr1 FROM [Order Details] LEFT OUTER JOIN Products ON [Order Details].ProductID = Products.ProductID WHERE ([Order Details].OrderID = @OrderID)', N'@OrderID varchar(5)', @OrderID = '7223'

В таблицах у меня есть следующие столбцы:
Customers (покупатели): CustomerID, CustomerName, Pass
Products (товары): ProductID, ProductName, CategoryID, UnitPrice
Categories (категории товаров): CategoryID, CategoryName
Orders (заказы): OrderID, CustomerID, OrderDate
Order_Details (детали заказов): OrderID, ProductID, UnitPrice, Quantity

Почему вместо столбца CategoryName выдает ошибку с названием столбца NameCategory. Вместо таблицы Order_Details выдает ошибку связанную с таблицей Order Details. Хотя пересмотрев весь программный код и все select, insert, delete я убедилась в правильности написания всех таблиц и столбцов.

В чем проблема я понять никак не могу.
...
Рейтинг: 0 / 0
Как исправить ошибку?
    #34498033
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Думаю, что эта проблема относится больше не к проектированию БД, а к используемому программному
средству, ASP.NET, если не ошибаюсь? Давай перенесу эту тему в соответствующий форум.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Как исправить ошибку?
    #34498035
Оксана Н
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо... Я туда тоже написала, так что эта тема там тоже есть.
...
Рейтинг: 0 / 0
Как исправить ошибку?
    #34498040
Оксана Н
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А в этой части программного кода нет никакой ошибки? Потому что из-за нее ничего не работает.

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
If Not IsPostBack Then
Dim ws As New localhost. Service1 ()
Dim ds As New DataSet ()
Dim log, pass As String
log=Session. Item ("login")
pass=Session.Item("pass")
ds.Merge(ws.GetCategories(log, pass))
DropDownList1.DataSource=ds
DropDownList1.DataMember="Categories"
DropDownList1.AutoPostBack=True
DropDownList1.DataTextField="CategoryName"
DropDownList1.DataValueField="CategoryID"
DropDownList1.DataBind()
End If
End Sub
...
Рейтинг: 0 / 0
Как исправить ошибку?
    #34498048
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Оксана НСпасибо... Я туда тоже написала, так что эта тема там тоже есть.
Тогда здесь я закрою тему, поскольку действительно эта проблема имеет мало общего собственно с проектированием. Ссылка а тему в форуме ASP.NET : Как исправить ошибку?
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как исправить ошибку?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]