Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Глюки: Параметры при запросах к БД Access / 2 сообщений из 2, страница 1 из 1
26.01.2005, 17:31
    #32885432
Василий Алибабаевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюки: Параметры при запросах к БД Access
Добрый день!

Запарился делать такую вещь:

1. Нужно сделать запрос к БД MS Access через ASP.NET используя параметры
2. По результатам выполнения предыдущего запроса с этими же параметрами нужно сделать еще пару запросов

текст:


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
					oleDbCommand.Connection=cn;
					cn.Open();
					oleDbCommand.ExecuteNonQuery();
					
					//Теперь попытаемся запостить статистику по IP посещения
					//Сначала узнаем есть ли запись в таблице tblREsourceStat, которая соответсвует
					//IP пользователя и текущей дате

					oleDbCommand.Parameters.Clear();
					oleDbCommand.CommandText="SELECT * FROM tblResourceStat where RESOURCE_ID=@ResourceId and RESOURCE_STAT_DATE=@ResourceStatDate and VISITOR_IP=@VisitorIP";

					string VisitorIP=Request.UserHostAddress;
					string SessionID= Session.SessionID;
					string Today ="#2005/01/26#"; //"#"+DateTime.Now.Year+"/"+DateTime.Now.Month+"/"+DateTime.Now.Day+"#";
					oleDbCommand.Parameters.Add("@ResourceId",this.Request.Params["resource_id"]);
					oleDbCommand.Parameters.Add("@VisitorIP",VisitorIP);
					//oleDbCommand.Parameters.Add("@ResourceStatDate",Today);
					oleDbCommand.Parameters.Add("@SessionId",SessionID);
					oleDbCommand.Parameters.Add("@ResourceStatDate",Today);

					OleDbDataReader myReader = oleDbCommand.ExecuteReader(CommandBehavior.SingleRow);

					if (!myReader.HasRows)
					{
						//если записей нет то
						myReader.Close();
						oleDbCommand.CommandText="INSERT INTO tblResourceStat (RESOURCE_STAT_DATE,RESOURCE_ID,TOTAL_VISITS,VISITOR_IP,SESSION_ID) values (@ResourceStatDate,@ResourceId,0,@VisitorIP,@SessionId)";
						oleDbCommand.ExecuteNonQuery();
					}
					else
					{
						//Иначе апдейтим каунтер
						oleDbCommand.CommandText="UPDATE tblResourceStat set TOTAL_VISITS=TOTAL_VISITS+1 where RESOURCE_ID=@ResourceId and RESOURCE_STAT_DATE=@ResourceStatDate and VISITOR_IP=@VisitorIP";
						oleDbCommand.ExecuteNonQuery();
					}
					cn.Close();


Внимание глюки:

В строке

string Today ="#2005/01/26#"; пытался писать DateTime Today= DateTime.Now;

нифига не помогает, при запросе на INSERT выдает ошибку :


Код: plaintext
1.
2.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.Data.OleDb.OleDbException: Data type mismatch in criteria expression.

Второй глюк

Если поставить строку
oleDbCommand.Parameters.Add("@ResourceStatDate",Today);

перед строкой
oleDbCommand.Parameters.Add("@SessionId",SessionID);

то запрос:
oleDbCommand.CommandText="INSERT INTO tblResourceStat (RESOURCE_STAT_DATE,RESOURCE_ID,TOTAL_VISITS,VISITOR_IP,SESSION_ID) values ("Now(),@ResourceId,0,@VisitorIP,@SessionId)";

В поле БД SESSION_ID добавит значение из параметра @ResourceStatDate!!!!!!

Что меня убило в усмерть.

Мож кто юзал такие глюки

Спасибо
...
Рейтинг: 0 / 0
27.01.2005, 01:09
    #32885948
voodoos
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюки: Параметры при запросах к БД Access
А в ACCESS надо подставлять параметры в том-же порядке, в котором они встречаются в запросе.
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Глюки: Параметры при запросах к БД Access / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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