Форум программистов, компьютерный форум, киберфорум
C++/CLI Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.68/19: Рейтинг темы: голосов - 19, средняя оценка - 4.68
0 / 0 / 0
Регистрация: 03.05.2009
Сообщений: 21

Ошибка при работе с базой данных

25.12.2009, 18:15. Показов 3849. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть форма, данные в которую загружаются через базу данных, при компиляции ошибок нет, но при работе возникает следующая: Additional information: Invalid attempt to read when no data is present.
Подскажите, как ее решить?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.12.2009, 18:15
Ответы с готовыми решениями:

Ошибка при работе с проигрывателем
Создал проект Windows Forms, кинул туда windows media player и button. В обработку клика по кнопке кинул код: private: System::Void...

Ошибка при работе с формой
namespace TestEditor { using namespace System; using namespace System::ComponentModel; using namespace System::Collections; ...

Ошибка при работе с методом IsDigit
String^ v; pin_ptr<const wchar_t> wch=PtrToStringChars(v); if(Char::IsDigit(wch)) { } ругается на функцию IsDigit ни одна из 2...

18
 Аватар для Konctantin
970 / 773 / 171
Регистрация: 12.04.2009
Сообщений: 1,700
25.12.2009, 18:27
ну так исключение, покажите код, и в каком месте ошибка, возможно вы читаете пустую ячейку или еще чего-то, код в студию и метку, где ошибка, а то что вы показали, это только для телепатов
0
0 / 0 / 0
Регистрация: 03.05.2009
Сообщений: 21
25.12.2009, 18:30  [ТС]
C++
1
2
3
4
5
6
7
8
9
10
for(int i = 0; i < len; i++)
     {
    sql = "select RightAns from baza where ID=" + Questions[i];
     c = gcnew SqlCommand(sql, Con);
    myReader = c->ExecuteReader();
     myReader->Read();
    if(Convert::ToInt32(myReader["RightAns"])==Answers[i]) // ************
    RAns++;
                myReader->Close();
             }
0
 Аватар для Konctantin
970 / 773 / 171
Регистрация: 12.04.2009
Сообщений: 1,700
25.12.2009, 18:41
Convert::ToInt32(myReader["RightAns"]) - а если там значение, которое не поддается преобразованию, тобиш вызывает исключение, это дело надо просто исключить, например использовать метод TryParse
0
0 / 0 / 0
Регистрация: 03.05.2009
Сообщений: 21
25.12.2009, 18:45  [ТС]
у меня есть 15 кнопок, при нажитии которых выдается вопрос с ответами как раз из этой базы, первые 10 работают, а при нажитии уже 11 выходит ошибка
как метод использовать?он подойдет в данном случае?
0
 Аватар для Konctantin
970 / 773 / 171
Регистрация: 12.04.2009
Сообщений: 1,700
25.12.2009, 18:56
Для начала, на каком языке вы пишете? net С++?

вот пример из хелпа:
C++
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
// This example demonstrates overloads of the TryParse method for
// several base types, and the TryParseExact method for DateTime.
// In most cases, this example uses the most complex overload; that is, the overload
// with the most parameters for a particular type. If a complex overload specifies
// null (Nothing in Visual Basic) for the IFormatProvider parameter, formatting
// information is obtained from the culture associated with the current thread.
// If a complex overload specifies the style parameter, the parameter value is
// the default value used by the equivalent simple overload.
using namespace System;
using namespace System::Globalization;
 
static void Show( bool parseResult, String^ typeName, String^ parseValue )
{
   String^ msgSuccess = L"Parse for {0} = {1}";
   String^ msgFailure = L"** Parse for {0} failed. Invalid input.";
 
   //
   if ( parseResult == true )
      Console::WriteLine( msgSuccess, typeName, parseValue );
   else
      Console::WriteLine( msgFailure, typeName );
}
 
void main()
{
   bool result;
   CultureInfo^ ci;
   String^ nl = Environment::NewLine;
   String^ msg1 = L"This example demonstrates overloads of the TryParse method for{0}"
   L"several base types, as well as the TryParseExact method for DateTime.{0}";
   String^ msg2 = L"Non-numeric types:{0}";
   String^ msg3 = L"{0}Numeric types:{0}";
   String^ msg4 = L"{0}The following types are not CLS-compliant:{0}";
 
   // Non-numeric types.
   Boolean booleanVal;
   Char charVal;
   DateTime datetimeVal;
 
   // Numeric types.
   Byte byteVal;
   Int16 int16Val;
   Int32 int32Val;
   Int64 int64Val;
   Decimal decimalVal;
   Single singleVal;
   Double doubleVal;
 
   // The following types are not CLS-compliant.
   SByte sbyteVal;
   UInt16 uint16Val;
   UInt32 uint32Val;
   UInt64 uint64Val;
 
   //
   Console::WriteLine( msg1, nl );
 
   // Non-numeric types:
   Console::WriteLine( msg2, nl );
 
   // DateTime
   // TryParse:
   // Assume current culture is en-US, and dates of the form: MMDDYYYY.
   result = DateTime::TryParse( L"7/4/2004 12:34:56",  datetimeVal );
   Show( result, L"DateTime #1", datetimeVal.ToString() );
 
   // Use fr-FR culture, and dates of the form: DDMMYYYY.
   ci = gcnew CultureInfo( L"fr-FR" );
   result = DateTime::TryParse( L"4/7/2004 12:34:56", ci, DateTimeStyles::None,  datetimeVal );
   Show( result, L"DateTime #2", datetimeVal.ToString() );
 
   // TryParseExact:
   // Use fr-FR culture. The format, "G", is short date and long time.
   result = DateTime::TryParseExact( L"04/07/2004 12:34:56", L"G", ci, DateTimeStyles::None,  datetimeVal );
   Show( result, L"DateTime #3", datetimeVal.ToString() );
 
   // Assume en-US culture.
   array<String^>^dateFormats = {L"f",L"F",L"g",L"G"};
   result = DateTime::TryParseExact( L"7/4/2004 12:34:56 PM", dateFormats, nullptr, DateTimeStyles::None,  datetimeVal );
   Show( result, L"DateTime #4", datetimeVal.ToString() );
   Console::WriteLine();
 
   // Boolean
   result = Boolean::TryParse( L"true",  booleanVal );
   Show( result, L"Boolean", booleanVal.ToString() );
 
   // Char
   result = Char::TryParse( L"A",  charVal );
   Show( result, L"Char", charVal.ToString() );
 
   // Numeric types:
   Console::WriteLine( msg3, nl );
 
   // Byte
   result = Byte::TryParse( L"1", NumberStyles::Integer, nullptr,  byteVal );
   Show( result, L"Byte", byteVal.ToString() );
 
   // Int16
   result = Int16::TryParse( L"-2", NumberStyles::Integer, nullptr,  int16Val );
   Show( result, L"Int16", int16Val.ToString() );
 
   // Int32
   result = Int32::TryParse( L"3", NumberStyles::Integer, nullptr,  int32Val );
   Show( result, L"Int32", int32Val.ToString() );
 
   // Int64
   result = Int64::TryParse( L"4", NumberStyles::Integer, nullptr,  int64Val );
   Show( result, L"Int64", int64Val.ToString() );
 
   // Decimal
   result = Decimal::TryParse( L"-5.5", NumberStyles::Number, nullptr,  decimalVal );
   Show( result, L"Decimal", decimalVal.ToString() );
 
   // Single
   result = Single::TryParse( L"6.6", static_cast<NumberStyles>((NumberStyles::Float | NumberStyles::AllowThousands)), nullptr,  singleVal );
   Show( result, L"Single", singleVal.ToString() );
 
   // Double
   result = Double::TryParse( L"-7", static_cast<NumberStyles>(NumberStyles::Float | NumberStyles::AllowThousands), nullptr,  doubleVal );
   Show( result, L"Double", doubleVal.ToString() );
 
   // Use the simple Double.TryParse overload, but specify an invalid value.
   result = Double::TryParse( L"abc",  doubleVal );
   Show( result, L"Double #2", doubleVal.ToString() );
 
   //
   Console::WriteLine( msg4, nl );
 
   // SByte
   result = SByte::TryParse( L"-8", NumberStyles::Integer, nullptr,  sbyteVal );
   Show( result, L"SByte", sbyteVal.ToString() );
 
   // UInt16
   result = UInt16::TryParse( L"9", NumberStyles::Integer, nullptr,  uint16Val );
   Show( result, L"UInt16", uint16Val.ToString() );
 
   // UInt32
   result = UInt32::TryParse( L"10", NumberStyles::Integer, nullptr,  uint32Val );
   Show( result, L"UInt32", uint32Val.ToString() );
 
   // UInt64
   result = UInt64::TryParse( L"11", NumberStyles::Integer, nullptr,  uint64Val );
   Show( result, L"UInt64", uint64Val.ToString() );
}
 
/*
This example produces the following results:
 
This example demonstrates overloads of the TryParse method for
several base types, as well as the TryParseExact method for DateTime.
 
Non-numeric types:
 
Parse for DateTime #1 = 7/4/2004 12:34:56 PM
Parse for DateTime #2 = 7/4/2004 12:34:56 PM
Parse for DateTime #3 = 7/4/2004 12:34:56 PM
Parse for DateTime #4 = 7/4/2004 12:34:56 PM
 
Parse for Boolean = True
Parse for Char = A
 
Numeric types:
 
Parse for Byte = 1
Parse for Int16 = -2
Parse for Int32 = 3
Parse for Int64 = 4
Parse for Decimal = -5.5
Parse for Single = 6.6
Parse for Double = -7
** Parse for Double #2 failed. Invalid input.
 
The following types are not CLS-compliant:
 
Parse for SByte = -8
Parse for UInt16 = 9
Parse for UInt32 = 10
Parse for UInt64 = 11
*/
0
0 / 0 / 0
Регистрация: 03.05.2009
Сообщений: 21
25.12.2009, 18:59  [ТС]
>Для начала, на каком языке вы пишете? net С++?

да. пример ни о чем не говорит, я не разбираюсь
0
 Аватар для Konctantin
970 / 773 / 171
Регистрация: 12.04.2009
Сообщений: 1,700
25.12.2009, 19:04
я не разбираюсь
как же вы пишите, если не разбираетесь?
0
0 / 0 / 0
Регистрация: 03.05.2009
Сообщений: 21
25.12.2009, 19:06  [ТС]
Цитата Сообщение от Konctantin Посмотреть сообщение
как же вы пишите, если не разбираетесь?
так надо, так и пишу
0
 Аватар для Konctantin
970 / 773 / 171
Регистрация: 12.04.2009
Сообщений: 1,700
25.12.2009, 19:12
как то так, не проверял:
C++
1
2
3
4
5
6
7
8
9
10
11
12
for(int i = 0; i < len; i++)
{
    sql = "select RightAns from baza where ID=" + Questions[i];
    c = gcnew SqlCommand(sql, Con);
    myReader = c->ExecuteReader();
    myReader->Read();
    int data = 0;
    Int32::TryParse(myReader["RightAns"], NumberStyles::Integer, nullptr,  data);
    if(data==Answers[i])
        RAns++;
    myReader->Close();
}
0
0 / 0 / 0
Регистрация: 03.05.2009
Сообщений: 21
25.12.2009, 19:17  [ТС]
NumberStyles::Integer

на это ругается
0
 Аватар для Konctantin
970 / 773 / 171
Регистрация: 12.04.2009
Сообщений: 1,700
25.12.2009, 19:20
как? по матушке или, может чего-то пишет
попробуйте или так:
C#
1
Int32::TryParse(myReader["RightAns"], nullptr,  data);
или так:
C++
1
Int32::TryParse(myReader["RightAns"],  data);
0
0 / 0 / 0
Регистрация: 03.05.2009
Сообщений: 21
25.12.2009, 19:21  [ТС]


error C2653: 'NumberStyles' : is not a class or namespace name
error C2065: 'Integer' : undeclared identifier
0
73 / 70 / 12
Регистрация: 01.11.2009
Сообщений: 246
25.12.2009, 19:40
Цитата Сообщение от BiathlonFan Посмотреть сообщение
if(Convert::ToInt32(myReader["RightAns"])==Answers[i])
+скобка + точка с запятой пропущена или отсутсвует?
Возможно запрос у вас ничего не возвращает вот и ошибка конвертации...
0
 Аватар для Konctantin
970 / 773 / 171
Регистрация: 12.04.2009
Сообщений: 1,700
25.12.2009, 19:43
+скобка + точка с запятой пропущена или отсутсвует?
Какая скобка и какая точка, это if, вся проблема в том, что возвращалось значение, которее не преобразовывается к данному типу или NULL
как решить проблему, я написал, решать ее не буду, так как даже нету компилятора под рукой.
0
73 / 70 / 12
Регистрация: 01.11.2009
Сообщений: 246
25.12.2009, 19:47
да чет затупил (а мож и слепой ) Да и цитата вроде как не твоя...
0
 Аватар для Konctantin
970 / 773 / 171
Регистрация: 12.04.2009
Сообщений: 1,700
25.12.2009, 19:51
если пишете так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
for(int i = 0; i < len; i++)
{
        sql = "select RightAns from baza where ID=" + Questions[i];
        c = gcnew SqlCommand(sql, Con);
        myReader = c->ExecuteReader();
        myReader->Read();
        int data = 0;
        Int32::TryParse(myReader["RightAns"], NumberStyles::Integer, nullptr,  data);
        if(data==Answers[i])
                RAns++;
        myReader->Close();
}
то будет чтение на одну позицию больше чем длинна потока, пишите ли так:
C++
1
2
3
4
for(int i = 0; i < len; ++i)
{
      .............
}
или так:
C++
1
2
3
4
while(!myReader->Read())
{
.........
}
Добавлено через 1 минуту
да чет затупил (а мож и слепой ) Да и цитата вроде как не твоя...
Оба мы ослепли, так как не увидели всей проблемы, а она была вверху, из-за извращения с циклом
0
0 / 0 / 0
Регистрация: 03.05.2009
Сообщений: 21
25.12.2009, 19:56  [ТС]
C++
1
2
3
4
 for(int i = 0; i < len; ++i)
{
      .............
}
это не помогает, а при while переменную i куда девать?
0
 Аватар для Konctantin
970 / 773 / 171
Регистрация: 12.04.2009
Сообщений: 1,700
25.12.2009, 20:19
при while переменную i куда девать?
объявляем перед циклом и увеличиваем в конце цикла
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.12.2009, 20:19
Помогаю со студенческими работами здесь

Ошибка при работе с .ini файлом
Прочитал, что хоть использование .ini файлов и устарело, но всё же кое-где практичнее системного реестра. В отличии от ini файлов с...

Исключение при работе с pictureBox (задание картинки при работе с формой)
Хочу задать изображение в компоненте pictureBox во время разработки формы, чтоб при запуске проги сразу отображалась картинка. Задаю...

Ошибка при работе с базой данных
скажите почему ошибка при этих строках: sqdb.insert(sms.TABLE_NAME1, sms.NAME1, cv); sqdb.execSQL(&quot;CREATE TABLE &quot; +...

Ошибка при работе с базой данных
Здравствуйте. При попытки чтения строк из БД в работе программы возникает ошибка &quot;Ссылка на объект не указывает на экземпляр...

Ошибки при работе с базой данных
Здравствуйте, недавно начал изучать работу с базой данных через Qt. Использую Qt 4.8 и Sqlite Вроде код взят с книги М. Шлее, но всё...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru