ADO.NET помощь начинающим

Форум посвящён работе с базами данных в .NET.

Модератор: Ramzes

#set
Новичок
Новичок
 
Сообщения: 45
Зарегистрирован: 05.10.2006 (Чт) 11:06

ADO.NET помощь начинающим

Сообщение #set » 19.11.2006 (Вс) 13:00

Ув. профессионалы!
Помогите простыми примерами по работе с ADO.NET
(чтение данных из базы, запись данных в базу, связывание двух таблиц в DataSet и последующая работа с данными)

В VB.6 проблем в принципе не было все задачи получались а тут никак не могу разобраться. считывать данные более мене получилось но как то не так:
Код: Выделить всё

    Private Sub ShowPopUp(ByRef card As String)
        Dim Conn As OleDbConnection
        Dim Comm As OleDbCommand
        Dim DR As OleDbDataReader
        Dim ImgPath As String
        Dim PersonId As Short
        Conn = New OleDbConnection()
        Conn.ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=MyBase;Data Source=" & GetServerName.ServerName()
        Conn.Open()
        Comm = New OleDbCommand()
        Comm.Connection = Conn
        Comm.CommandText = "SELECT * FROM clients where Card=CONVERT(nvarchar, '" & card & "')"
        DR = Comm.ExecuteReader
        DR.Read()
        PersonId = DR(0)
        Conn.Close()
        DR.Close()
        Conn = Nothing
        DR = Nothing
    End Sub


И какая разница при использование OleDbConnection и SqlClient
Если я пишу прогу под SQL 2000 то лучше пользоваться SQLclient?

Всем заранее благодарен.

gaidar
System Debugger
System Debugger
 
Сообщения: 3152
Зарегистрирован: 23.12.2001 (Вс) 13:22

Сообщение gaidar » 19.11.2006 (Вс) 13:52

The difficult I’ll do right now. The impossible will take a little while. (c) US engineers in WWII
I don't always know what I'm talking about, but I know I'm right. (c) Muhammad Ali

#set
Новичок
Новичок
 
Сообщения: 45
Зарегистрирован: 05.10.2006 (Чт) 11:06

Сообщение #set » 19.11.2006 (Вс) 14:38

1. Хотелось бы примеры VB а не C#.
2. Например как из таблицы "Table1" выбрать строки где fields(0) = 100, потом прибавить значение из Combobox1 и записать обратно в таблицу?
3. Как из таблицы "Table1" скопировать row в "Table2"?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 19.11.2006 (Вс) 15:23

#set писал(а):1. Хотелось бы примеры VB а не C#.

http://blogs.gotdotnet.ru/personal/gaid ... a6cc6ec164
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

#set
Новичок
Новичок
 
Сообщения: 45
Зарегистрирован: 05.10.2006 (Чт) 11:06

Сообщение #set » 19.11.2006 (Вс) 16:55

Код: Выделить всё

        On Error GoTo err
        Dim mySqlConnection As New SqlClient.SqlConnection
        Dim mySqlcommand As New SqlClient.SqlCommand
        mySqlConnection.ConnectionString = "Data Source=" & GetServerName.ServerName() & " ;Initial Catalog=Northerner;Integrated Security=True"
        mySqlConnection.Open()
        mySqlcommand.CommandText = "Update _tickets set isprint = 1 where kk =" & card & " and isprint = 0 and r =" & r
        mySqlcommand.ExecuteNonQuery()
err:
        MsgBox(Err.Description)


Подскажите что делаю не так?
Элементарно с этим Ado.net не могу даже единичку в таблице проставить там где нужно. :(

gaidar
System Debugger
System Debugger
 
Сообщения: 3152
Зарегистрирован: 23.12.2001 (Вс) 13:22

Сообщение gaidar » 19.11.2006 (Вс) 18:24

#set писал(а):1. Хотелось бы примеры VB а не C#.
2. Например как из таблицы "Table1" выбрать строки где fields(0) = 100, потом прибавить значение из Combobox1 и записать обратно в таблицу?
3. Как из таблицы "Table1" скопировать row в "Table2"?


В Quickstarts можно выбрать язык (в верхнем правом углу combo box).
The difficult I’ll do right now. The impossible will take a little while. (c) US engineers in WWII
I don't always know what I'm talking about, but I know I'm right. (c) Muhammad Ali

Thomas
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 246
Зарегистрирован: 12.11.2005 (Сб) 0:17
Откуда: "Сказочное королевство"

Сообщение Thomas » 19.11.2006 (Вс) 19:20

#set
Привет.
Ты поспокойнее. Сходи кофейку попей, подыши воздухом, а потом вернись и вдумчиво почитай нашу любимую MSDN и то что она предлагает еще.
И я почти уверен, что ты сам увидишь где ошибаешься и что делаешь не так.

И внимательно относись к командам SQL.

С наилучшими пожеланиями

Зы по моему ты забыл написать

mySqlcommamd.Connection=mySqlconnection
mySqlcommand.CommandText = "Update _tickets set isprint = 1 where kk =" & card & " and isprint = 0 and r =" & r
и только тогда открывать соединение.
Последний раз редактировалось Thomas 19.11.2006 (Вс) 23:28, всего редактировалось 2 раз(а).
Met vriendelijke groetjes
VS2008 Pro FW3.5 SP1

#set
Новичок
Новичок
 
Сообщения: 45
Зарегистрирован: 05.10.2006 (Чт) 11:06

Сообщение #set » 19.11.2006 (Вс) 21:00

Thomas
Привет.
Прогаю не больше мес.
Причем 3 нед. на VB6 и дня 4 -5 на vb2005net
и просто плохо еще понимаю "что" за "чем"...
Теперь буду знать.


Да, спасибо - получилось :)

#set
Новичок
Новичок
 
Сообщения: 45
Зарегистрирован: 05.10.2006 (Чт) 11:06

Сообщение #set » 20.11.2006 (Пн) 12:50

Какая штука интересная получается.
Если я вот эту строку пишу в query analyzer'е то все прокатывает нормально. Если пишу в VB
Код: Выделить всё
mySqlcommand.CommandText = "Update _tickets set Printed = convert(datetime,'20.05.2006 15:45:20') where kk =" & card & " and isprint = 0 and r =" & r


то ругается на то что при конвертации чаров в дату типо дата выходит за пределы разумного. Че он так тупит?

Выход только через сторед процедуру?

Thomas
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 246
Зарегистрирован: 12.11.2005 (Сб) 0:17
Откуда: "Сказочное королевство"

Сообщение Thomas » 20.11.2006 (Пн) 16:54

#set
Слущай, у тебя там две ошибочки, на выпуклый военно-морской глаз. :D

Первое при команде UpDate нужно указывать новое значение поля после Set и старое значение поля после Where. У тебя поле Printed указано только в Set. А где старое значение? :shock:

Второе, я так понимаю datetime это переменная, которая добавляется в запрос. Так и пиши соответственно
Код: Выделить всё

mySqlcommand.CommandText = "Update _tickets set Printed = "  + convert(datetime,'20.05.2006 15:45:20')
+ " where kk =" & card & " and isprint = 0 and r =" & r


А раз это тип datetime, то возможно нужно еще перед и после добавить #.

И проверь соответствие типа даты в базе и в твоём запросе. Из-за разных нотаций часто бывают глюки. 20.05.2006 и 05/20/2006 это две разные вещи.
Met vriendelijke groetjes
VS2008 Pro FW3.5 SP1

#set
Новичок
Новичок
 
Сообщения: 45
Зарегистрирован: 05.10.2006 (Чт) 11:06

Сообщение #set » 21.11.2006 (Вт) 13:26

Thomas
Ну ты даешь брат!

Первое при команде UpDate нужно указывать новое значение поля после Set


convert(datetime,'20.05.2006 15:45:20') и есть новое значение

А где старое значение?


Для чего?

А раз это тип datetime, то возможно нужно еще перед и после добавить #.


Не нужно ...

Thomas
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 246
Зарегистрирован: 12.11.2005 (Сб) 0:17
Откуда: "Сказочное королевство"

Сообщение Thomas » 21.11.2006 (Вт) 14:16

#set

mySqlcommand.CommandText = "Update _tickets set isprint = 1 where kk =" & card & " and isprint = 0 and r =" & r


Для чего?


Синтаксис у команды UpDate такой

А в последней команде у тебя Printed присутствует только в Set, а после Where его нет.
Met vriendelijke groetjes
VS2008 Pro FW3.5 SP1


Вернуться в ADO.NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12

    TopList