Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
10 / 10 / 2
Регистрация: 12.05.2014
Сообщений: 229
1
.NET 4.x

Как правильно выполнить команду SELECT и присвоить значение переменным

12.01.2015, 15:49. Показов 1361. Ответов 17
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем самые наилучшие пожелания в Новом Году!

Подскажите пожалуйста в чем грабли:
VB.NET
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
        'Выбираю значение из табл. Принтер
        Dim Connect1 As New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Path)
        zSQL1 = String.Format("SELECT PrintNum, PrintBrand FROM Printer WHERE KatrNum={0}", zKNum)
        Dim Command1 As New OleDb.OleDbCommand(zSQL1, Connect1)
        Connect1.Open()
        Dim dReader As OleDb.OleDbDataReader
        dReader = Command1.ExecuteReader(CommandBehavior.CloseConnection)
        While dReader.Read
            zPNum = dReader.GetValue(0)
            zBrand = dReader.GetValue(1)
        End While
        'Добавляю данные в таблицу Заявка
        Dim Connect As New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Path)
        zSQL = "INSERT INTO Zajavka(Data, KatrNum, PrintNum, PrintBrand, Kol_Str, Zapravka, Remont) VALUES(@p1, @p2, @p3, @p4, @p5, @p6, @p7)"
        Dim Command As New OleDb.OleDbCommand(zSQL, Connect)
        Command.Parameters.Add("@p1", OleDb.OleDbType.Date, 0).Value = zData
        Command.Parameters.Add("@p2", OleDb.OleDbType.BSTR, 0).Value = zKNum
        Command.Parameters.Add("@p3", OleDb.OleDbType.BSTR, 0).Value = zPNum
        Command.Parameters.Add("@p4", OleDb.OleDbType.BSTR, 0).Value = zBrand
        Command.Parameters.Add("@p5", OleDb.OleDbType.BSTR, 0).Value = zKolStr
        Command.Parameters.Add("@p6", OleDb.OleDbType.BSTR, 0).Value = zZapravka
        Command.Parameters.Add("@p7", OleDb.OleDbType.BSTR, 0).Value = zRemont
        Connect.Open()
        Command.ExecuteNonQuery()
        Connect.Close()
        Close()
все работает кроме присвоения значений переменным zPNum и zBrand, если изначально присвоить им значение,
то оно так и останется не измененным.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.01.2015, 15:49
Ответы с готовыми решениями:

Как правильно выполнить запрос Insert.Into.Select.From.Where
Доброго утра всем, пытаюсь записать данные с лэйбла в последнюю строку БД, но выдает ошибку в...

Как присвоить значения однотипным переменным в цикле?
Здравствуйте! В коде есть 14 переменных: Vopros1 , Vorpos2 ... Vopros14 Дальше хочу сделать...

Как правильно присвоить переменным данные для использования с другом методе?
Привет всем! Есть такая проблема... есть push уведомления, и когда приходит уведомление их нужно...

Как правильно выполнить команду print
я только начинаю изучать язык и вообще программирование... и у меня проблема с вызовом команды...

17
1245 / 1055 / 293
Регистрация: 07.03.2012
Сообщений: 3,245
12.01.2015, 17:00 2
Цитата Сообщение от Vlad11 Посмотреть сообщение
останется не измененным.
ну поставьте брейкпоинт в While, может, там данных нет
0
833 / 641 / 101
Регистрация: 20.08.2013
Сообщений: 2,524
12.01.2015, 18:48 3
1. В первой команде делай тоже параметры, а не String.Format.
2. Для output-параметров надо сохранять переменную с самим параметром и после выполнения читать из неё Value.
3. Используй Using.
0
10 / 10 / 2
Регистрация: 12.05.2014
Сообщений: 229
14.01.2015, 12:25  [ТС] 4
Qwertiy,
К сожалению, тема еще актуальна, если не сложно покажите в коде.
0
1245 / 1055 / 293
Регистрация: 07.03.2012
Сообщений: 3,245
14.01.2015, 13:22 5
используйте параметры http://msdn.microsoft.com/ru-r... .110).aspx
0
10 / 10 / 2
Регистрация: 12.05.2014
Сообщений: 229
14.01.2015, 13:41  [ТС] 6
Цитата Сообщение от Монфрид Посмотреть сообщение
используйте параметры http://msdn.microsoft.com/ru-r... .110).aspx
не понимаю зачем

Не по теме:

не умничай, лучше пальцем покажи

0
833 / 641 / 101
Регистрация: 20.08.2013
Сообщений: 2,524
14.01.2015, 21:53 7
Цитата Сообщение от Vlad11 Посмотреть сообщение
лучше пальцем покажи
Я уже показал.
0
10 / 10 / 2
Регистрация: 12.05.2014
Сообщений: 229
15.01.2015, 09:11  [ТС] 8
Цитата Сообщение от Qwertiy Посмотреть сообщение
Я уже показал.
Верно, показал, но для понимающих, исправь этот блок:
VB.NET
1
2
3
4
5
6
7
8
9
        zSQL1 = String.Format("SELECT PrintNum, PrintBrand FROM Printer WHERE KatrNum={0}", zKNum)
        Dim Command1 As New OleDb.OleDbCommand(zSQL1, Connect1)
        Connect1.Open()
        Dim dReader As OleDb.OleDbDataReader
        dReader = Command1.ExecuteReader(CommandBehavior.CloseConnection)
        While dReader.Read
            zPNum = dReader.GetValue(0)
            zBrand = dReader.GetValue(1)
        End While
пожалуйста, как ты его себе представляешь
0
356 / 295 / 78
Регистрация: 02.10.2013
Сообщений: 476
Записей в блоге: 5
16.01.2015, 20:01 9
Лучший ответ Сообщение было отмечено Vlad11 как решение

Решение

VB.NET
1
2
3
4
5
6
Dim SQL1 As New OleDb.OleDbCommand("SELECT PrintNum FROM Printer WHERE KatrNum=0", Connect1)
Dim SQL2 As New OleDb.OleDbCommand("SELECT PrintBrand FROM Printer WHERE KatrNum=0", Connect1)
Connect1.Open()
zPNum = SQL1.ExecuteScalar()
zBrand = SQL2.ExecuteScalar()
Connect1.Close
1
10 / 10 / 2
Регистрация: 12.05.2014
Сообщений: 229
17.01.2015, 10:20  [ТС] 10
dimsaratov,

Выдает ошибку: "Дополнительные сведения: Несоответствие типов данных в выражении условия отбора."
строка 4 и 5

Добавлено через 34 минуты
"ExecuteScalar" не является членом "String"


MSDN пишет:
OleDbCommand.ExecuteScalar
Возвращаемое значение
Тип: System.Object
Первый столбец первой строки набора результатов или пустая ссылка, если набор результатов пуст.
0
356 / 295 / 78
Регистрация: 02.10.2013
Сообщений: 476
Записей в блоге: 5
17.01.2015, 20:22 11
VB.NET
1
2
3
Dim SQL1 As New OleDb.OleDbCommand
Dim zPNum As Object ' или формат значения PrintNum в базе данных
zPNum = SQL1.ExecuteScalar()
Проверь еще условие отбора после WHERE на правильность формата
0
833 / 641 / 101
Регистрация: 20.08.2013
Сообщений: 2,524
19.01.2015, 00:21 12
Цитата Сообщение от Vlad11 Посмотреть сообщение
Выдает ошибку: "Дополнительные сведения: Несоответствие типов данных в выражении условия отбора."
строка 4 и 5
И почему число присваивается строковой переменной?
0
356 / 295 / 78
Регистрация: 02.10.2013
Сообщений: 476
Записей в блоге: 5
19.01.2015, 08:07 13
Лучший ответ Сообщение было отмечено Vlad11 как решение

Решение

А я знаю???

Наверно надо так:
VB.NET
1
Dim SQL1 As New OleDb.OleDbCommand("SELECT PrintNum FROM Printer WHERE KatrNum='" & zkNum & "'" , Connect1)
1
10 / 10 / 2
Регистрация: 12.05.2014
Сообщений: 229
19.01.2015, 09:58  [ТС] 14
dimsaratov,

Уф... Вот это оно:

VB.NET
1
2
3
4
5
6
7
8
        Dim Connect1 As New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Path)
        MsgBox(zKNum)
        Dim SQL1 As New OleDb.OleDbCommand("SELECT PrintNum FROM Printer WHERE KatrNum='" & zKNum & "'", Connect1)
        Dim SQL2 As New OleDb.OleDbCommand("SELECT PrintBrand FROM Printer WHERE KatrNum='" & zKNum & "'", Connect1)
        Connect1.Open()
        zPNum = SQL1.ExecuteScalar()
        zBrand = SQL2.ExecuteScalar()
        Connect1.Close()
Огромное СПАСИБО!
0
COM‐пропагандист
859 / 768 / 147
Регистрация: 18.12.2014
Сообщений: 2,198
Записей в блоге: 4
22.01.2015, 21:30 15
Это огромная дыра в безопасности. Если zKNum будет чему-то вроде 'UNION SELECT 1,username,password,1 FROM admin'. А если там будет DELETE, то вся ваша база данных полетит к чертям.
0
10 / 10 / 2
Регистрация: 12.05.2014
Сообщений: 229
23.01.2015, 09:44  [ТС] 16
Цитата Сообщение от Замабувараев Посмотреть сообщение
Это огромная дыра в безопасности. Если zKNum будет чему-то вроде 'UNION SELECT 1,username,password,1 FROM admin'. А если там будет DELETE, то вся ваша база данных полетит к чертям.
Из Советской классики: "Переведи!"

zKNum- переменная в которой содержится значение, и команда SELECT ищет в таблице данные, отвечающие этому значению, и насколько я понимаю пусть будет там DELETE, SELECT не найдет такой записи.
Или я кой чего не понимаю?
0
833 / 641 / 101
Регистрация: 20.08.2013
Сообщений: 2,524
23.01.2015, 16:31 17
Цитата Сообщение от Vlad11 Посмотреть сообщение
Или я кой чего не понимаю?
SQL Injection
0
10 / 10 / 2
Регистрация: 12.05.2014
Сообщений: 229
26.01.2015, 12:02  [ТС] 18
Qwertiy,

Не по теме:

Жуть, даже представить себе такое не мог. Спасибо за информацию.

0
26.01.2015, 12:02
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.01.2015, 12:02
Помогаю со студенческими работами здесь

Как правильно выполнить команду копировать?
Подскажите, как правильно выполнить команду копировать для любого пользователя и с определённым...

Как присвоить переменным значение слова на русском?
хочу сделать так: #include <iostream> using namespace std; int main() {

Как присвоить значение переменным a и b находящимся в классе area_cl
Подскажите пожалуйста, как присвоить значение переменным a и b находящимся в классе area_cl, из...

Как присвоить значение переменных php переменным javascript?
Добрый день! можно ли как нибуть через ajax присвоить значение переменных php переменным...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru