0 / 0 / 1
Регистрация: 15.05.2016
Сообщений: 15

Не удается получить значение поля бд по известному другому полю

15.05.2016, 09:11. Показов 2873. Ответов 22
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Вот часть кода. Нужно из бд аксесс изъять значение поля Namereg по значению поля Phone. Выдает не само значение в label, а "System.Data.OleDb.OleDbDataReader"( ((* Что делать? где ошибка?



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
string connectString = "Provider=Microsoft.Jet.OLEDB.4.0;" +
                           "Data Source= F:/курсовая работа/курсовая работа/BaSa.mdb";
 
                OleDbCommand comm = new OleDbCommand();
                OleDbConnection connect = new OleDbConnection(connectString);
                try
                {
 
                    connect.Open();
                    comm.CommandText = @"SELECT COUNT(*) FROM base Where Phone = '" + phone.Text + "' AND Pass='"+password.Text+"'";
                    comm.Connection = connect;
                    int count = (int)comm.ExecuteScalar(); //вернет количество записей
                    if (count > 0)
                    {
                        
                        String sql;
                        sql = "SELECT @Namereg "+"FROM base "+" Where Phone='" + phone.Text + "'";
 
                        OleDbCommand cmd = new OleDbCommand(sql, connect);
                        OleDbDataReader reader = comm.ExecuteReader();
                        while (reader.Read())
                         {
                            Label5.Text =  reader.ToString();
                         }
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.05.2016, 09:11
Ответы с готовыми решениями:

Занесение значения поля из связанной таблицы другому полю
Есть две таблицы DataTable - основная с именем DT_MAIN, в составе которой есть поля KEY и VL, и справочник - DT_SPR, состоящий из двух...

Присвоить значения одного поля ввода другому полю в 1С:8.2 Управляемое приложение
Подскажите пожалуйста, у меня есть на форме в 1С 8.2 поля для ввода данных. Необходимо после ввода данных в одно поле присвоить это...

Не удается присвоить значение статическому полю класса
Почему данный код не работает? Выводит ошибку Error LNK2001 неразрешенный внешний символ ""public: static int...

22
785 / 616 / 273
Регистрация: 04.08.2015
Сообщений: 1,713
15.05.2016, 09:34
C#
1
Label5.Text = reader.GetString(0);
1
0 / 0 / 1
Регистрация: 15.05.2016
Сообщений: 15
15.05.2016, 10:12  [ТС]
ошибка...( "Дополнительные сведения: Заданное приведение является недопустимым."
0
785 / 616 / 273
Регистрация: 04.08.2015
Сообщений: 1,713
15.05.2016, 11:10
Лучший ответ Сообщение было отмечено valuename как решение

Решение

Тогда
C#
1
Label5.Text = reader.GetValue(0).ToString();
1
0 / 0 / 1
Регистрация: 15.05.2016
Сообщений: 15
16.05.2016, 16:21  [ТС]
Отсутствуют данные для строки или столбца.(( он, получается, не видит поле в том запросе выше?...как быть?

Добавлено через 44 минуты
нашла пример тут http://csharpprogramming.ru/da... cutereader
но у меня не работает в строке sb.AppendLine(reader.GetString("Namereg" ))
подчеркивает "Namereg" и пишет, что невозможно привести из стринг и инт...
хотя в примере стринг вроде... я и собаку приписывала впереди, и имя менять пробовала...никак...
и у них там в запросе используется name, а потом в нужной мне строке Name
я не понимаю, почему так. это особенность работы с майэскуэль?
я пыталась тоже и другую переменную вставить..никак и всё. и ноль писала вместо этого. тогда пишет ошибку
"Отсутствуют данные для строки или столбца."

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
string connectString = "Provider=Microsoft.Jet.OLEDB.4.0;" +
                           "Data Source= F:/курсовая работа/курсовая работа/BaSa.mdb";
 
                OleDbCommand com = new OleDbCommand();
                OleDbConnection connect = new OleDbConnection(connectString);
                try
                {
 
                    connect.Open();
                    com.CommandText = @"SELECT COUNT(*) FROM base Where Phone = '" + phone.Text + "' AND Pass='"+password.Text+"'";
                    com.Connection = connect;
                    int count = (int)com.ExecuteScalar(); //вернет количество записей
                    if (count > 0)
                    {
                        System.Text.StringBuilder sb = new System.Text.StringBuilder();
                        String sql;
                        sql = "SELECT @Namereg "+"FROM base "+" Where Phone='" + phone.Text + "'";
 
                        OleDbCommand cmd = new OleDbCommand(sql, connect);
                        OleDbDataReader reader = com.ExecuteReader();
                        
                        w.WriteLine("****************************");         
                        w.WriteLine(DateTime.Now);
                        w.WriteLine(sb.AppendLine(reader.GetString("Namereg")) +" отправил(-а) комментарий:");
                        w.WriteLine("""+comm.Text+""");
                        w.WriteLine("****************************" + "\n\r\n\r");
0
785 / 616 / 273
Регистрация: 04.08.2015
Сообщений: 1,713
16.05.2016, 17:46
Лучший ответ Сообщение было отмечено valuename как решение

Решение

Цитата Сообщение от valuename Посмотреть сообщение
SELECT @Namereg
символ @ не нужен.
1
0 / 0 / 1
Регистрация: 15.05.2016
Сообщений: 15
16.05.2016, 17:52  [ТС]
все равно подчеркивает...пишет стринг в инт невозможно... и с нулем не видет строку...
и с гетвалюэ не получается...(((
0
785 / 616 / 273
Регистрация: 04.08.2015
Сообщений: 1,713
16.05.2016, 18:14
Лучший ответ Сообщение было отмечено valuename как решение

Решение

Цитата Сообщение от valuename Посмотреть сообщение
нашла пример тут
В примере база MySql и используется MySqlDataReader , а у вас Access и OleDbDataReader. Обращайтесь по индексу. Код
C#
1
reader.GetValue(0).ToString();
должен работать после исправления ошибки с @.
1
0 / 0 / 1
Регистрация: 15.05.2016
Сообщений: 15
16.05.2016, 18:19  [ТС]
Отсутствуют данные для строки или столбца.... чертовщина какая-то...

Добавлено через 1 минуту
кстати, гетвалюэ принимает порядковый номер столбца в бд? у меня третий (пишу 2), и такая ошибка...Впрочем, как с нулем и единицей...
0
785 / 616 / 273
Регистрация: 04.08.2015
Сообщений: 1,713
16.05.2016, 18:32
Цитата Сообщение от valuename Посмотреть сообщение
кстати, гетвалюэ принимает порядковый номер столбца в бд?
В результирующем наборе. Если вы пишете SELECT Namereg FROM base, то у вас 1 столбец.
Покажите код, что у вас там сейчас.
1
0 / 0 / 1
Регистрация: 15.05.2016
Сообщений: 15
16.05.2016, 18:40  [ТС]
string connectString = "Provider=Microsoft.Jet.OLEDB.4.0;" +
"Data Source= F:/курсовая работа/курсовая работа/BaSa.mdb";

OleDbCommand com = new OleDbCommand();
OleDbConnection connect = new OleDbConnection(connectString);
try
{

connect.Open();
com.CommandText = @"SELECT COUNT(*) FROM base Where Phone = '" + phone.Text + "' AND Pass='"+password.Text+"'";
com.Connection = connect;
int count = (int)com.ExecuteScalar(); //вернет количество записей
if (count > 0)
{
System.Text.StringBuilder sb = new System.Text.StringBuilder();
String sql;
sql = "SELECT Namereg "+"FROM base "+" Where Phone='" + phone.Text + "'";

OleDbCommand cmd = new OleDbCommand(sql, connect);
OleDbDataReader reader = com.ExecuteReader();

w.WriteLine("*************************** *");
w.WriteLine(DateTime.Now);
w.WriteLine(reader.GetValue(0).ToString( ) + " отправил(-а) комментарий:");
w.WriteLine("""+comm.Text+""");
w.WriteLine("*************************** *" + "\n\r\n\r");
w.Close();
comment.Visible = true;
comm.Text = "";
Response.Redirect(Request.RawUrl);
}

Добавлено через 3 минуты
Слушайте,я, конечно, наглею, но может, вы мне дадите свою почту, и я скину проект по ней. Я уже ума не приложу, что там поменять... Какая нибудь идиотская ошибка...
0
785 / 616 / 273
Регистрация: 04.08.2015
Сообщений: 1,713
16.05.2016, 19:05
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
string connectString = "Provider=Microsoft.Jet.OLEDB.4.0;" +
"Data Source= F:/курсовая работа/курсовая работа/BaSa.mdb";
 
OleDbCommand comm = new OleDbCommand();
OleDbConnection connect = new OleDbConnection(connectString);
try
{
 
connect.Open();
comm.CommandText = @"SELECT COUNT(*) FROM base Where Phone = '" + phone.Text + "' AND Pass='"+password.Text+"'";
comm.Connection = connect;
int count = (int)comm.ExecuteScalar(); //вернет количество записей
if (count > 0)
{
                        
          String sql;
          sql = "SELECT Namereg FROM base  Where Phone='" + phone.Text + "'";
 
          OleDbCommand cmd = new OleDbCommand(sql, connect);
          OleDbDataReader reader = comm.ExecuteReader();
          while (reader.Read())
          {
                 Label5.Text =  reader.GetValue(0).ToString();
          }
}
}
1
0 / 0 / 1
Регистрация: 15.05.2016
Сообщений: 15
16.05.2016, 20:27  [ТС]
спасибо огромное! Я такая идиотка... на каком-то этапе удалила случайно reader.Read()
но теперь такая проблема, что в имени отображает только первый символ, а не полное имя...

Добавлено через 8 минут
хотя нет, не первый символ поля... а вообще возвращает "1" всегда... это типа поле заполнено что ли? как же само содержимое изъять?

Добавлено через 59 минут
string connectString = "Provider=Microsoft.Jet.OLEDB.4.0;" +
"Data Source= F:/курсовая работа/курсовая работа/BaSa.mdb";

OleDbCommand com = new OleDbCommand();
OleDbConnection connect = new OleDbConnection(connectString);
try
{

connect.Open();
com.CommandText = @"SELECT COUNT(*) FROM base Where Phone = '" + phone.Text + "' AND Pass='"+password.Text+"'";
com.Connection = connect;
int count = (int)com.ExecuteScalar();
if (count > 0)
{

String sql;
sql = "SELECT Namereg FROM base Where Phone='" + phone.Text + "'";

OleDbCommand cmd = new OleDbCommand(sql, connect);
OleDbDataReader reader = com.ExecuteReader();
string s="";
while (reader.Read())
{ s += reader.GetValue(0).ToString(); }
w.WriteLine("*************************** *");
w.WriteLine(DateTime.Now);
w.WriteLine(s + " отправил(-а) комментарий:");
w.WriteLine("""+comm.Text+""");
w.WriteLine("*************************** *" + "\n\r\n\r");
w.Close();

результат всегда типа такого:

****************************
16.05.2016 20:27:06
1 отправил(-а) комментарий:
"123456789"
****************************
0
785 / 616 / 273
Регистрация: 04.08.2015
Сообщений: 1,713
16.05.2016, 21:10
Посмотрите структуру таблицы, ее содержимое. Какой тип данных у Namereg и что сейчас хранится в этом поле.
1
0 / 0 / 1
Регистрация: 15.05.2016
Сообщений: 15
16.05.2016, 21:20  [ТС]
вот
Миниатюры
Не удается получить значение поля бд по известному другому полю   Не удается получить значение поля бд по известному другому полю  
0
0 / 0 / 1
Регистрация: 15.05.2016
Сообщений: 15
16.05.2016, 21:23  [ТС]
дело не в бд.. ну или во всех полях....я вот если беру sql = "SELECT Pass FROM base Where Phone='" + phone.Text + "'";
то результат тот же с "1"

****************************
16.05.2016 21:21:46
1 отправил(-а) комментарий:
"ttt"
****************************
0
785 / 616 / 273
Регистрация: 04.08.2015
Сообщений: 1,713
16.05.2016, 21:38
Попробуйте так
C#
1
2
3
4
5
6
7
8
9
10
11
if (count > 0)
{
                        
          String sql;
          sql = "SELECT Namereg FROM base  Where Phone='" + phone.Text + "'";
 
          OleDbCommand cmd = new OleDbCommand(sql, connect);
          object result = comm.ExecuteScalar();
         if(result !=null)
                 Label5.Text =  result.ToString();    
}
1
0 / 0 / 1
Регистрация: 15.05.2016
Сообщений: 15
16.05.2016, 21:45  [ТС]
результат не изменился((
0
785 / 616 / 273
Регистрация: 04.08.2015
Сообщений: 1,713
16.05.2016, 21:51
А в phone.Text что пишете? Если менять телефон, значение меняется?
1
0 / 0 / 1
Регистрация: 15.05.2016
Сообщений: 15
16.05.2016, 22:07  [ТС]
менять не пробовала. есть просто регистрация и там поиск по бд. если встречается, то ошибка. вроде нормально работает всё. а вот с отображением инф никак

Добавлено через 4 минуты
давайте я все-таки кину программу... не хотелось бы ее так вот открыто размещать... курсовая и еще не сдана... как бы мне не сказали, что я еще ее скачала с нэта... а Вы можете мне по почте написать что-то, а я вам в ответ прикреплю проект ... пожалуйста(* (моя почта malkova-xeni@yandex.ru)

Добавлено через 8 минут
иии.. вообще всегда единицу пишет...если и номер просить, и пароль, и имя..
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.05.2016, 22:07
Помогаю со студенческими работами здесь

Подсчет уникальных значений по полю с фильтром по другому полю
Добрый день! Есть два столбца. Хочу посчитать количество строк, но по первому условию отобрать записи в ячейках которых встречается...

Как присвоить значение одного поля другому?
Здравствуйте, подскажите пож-ста, в форме Хозяева есть подчиненная таблица Карта_Животного, в ней есть номер в поле Код_Карты, как его...

Как придать значение одного текстового поля другому
Необходимо, используя данные, введённые в текстовое поле (Вводимый текст) Fio1_it, заполнить поле FIOs (Динамический текст) текстом из...

Значение поля на форме не передается полю таблицы
Не понимаю, почему возникает ошибка и значения полей не передаются в таблицу. Находила похожую тему, однако там проблема была в том, что у...

не получается присвоить полю значение другого поля
В строке с о смайликом Sub Postopen(Source As Notesuidocument) Dim ws As New NotesUIWorkspace Dim db As NotesDatabase Dim s As...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru