подкючиться к БД

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
stud
Новичок
Новичок
 
Сообщения: 27
Зарегистрирован: 19.11.2002 (Вт) 19:21
Откуда: Ukraine

подкючиться к БД

Сообщение stud » 01.05.2003 (Чт) 17:26

помогите разобраться.

VB приложение работает с бд(sql server) вот так:

Код: Выделить всё
Dim cnn As ADODB.Connection
Dim cmd As ADODB.Command
Dim rst As ADODB.Recordset
Dim sSQL As String
.........

sSQL="select * from main"

Set cnn = New ADODB.Connection

cnn.ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=sbd"
    cnn.CursorLocation = adUseClient
    cnn.Open


Set rst = New ADODB.Recordset
    rst.LockType = adLockOptimistic
    rst.CursorType = adOpenKeyset
    rst.Open sSQL, cnn, adOpenStatic, adLockOptimistic


................


Как сделать то же самое посредством ASP? Как считать и отобразить данные в ИЕ?
(ASP только начинаю осваивать, примеры типа "сегодня такое-то число" работают, значит все для нормальной работы имеется).

При попытке "переделывания" вышеуказанного кода, ошибка, насколько я понимаю появляется на строке

cnn.ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=sbd"

помогите, чем можете :)
Что-то мысль не приходит... Что ж, начнём без неё.
(c)Е. Кащеев

Cyrax
Cyberninja
Cyberninja
Аватара пользователя
 
Сообщения: 891
Зарегистрирован: 25.04.2002 (Чт) 21:20
Откуда: Magnitogorsk, Russia

Сообщение Cyrax » 02.05.2003 (Пт) 10:54

сколько я не встречал примеров доступа к БД из ASP-кода, все они использовали ODBC-источники данных. создай системный источник данных и пользуй его.
Ты это ему расскажи. Я уже пять болтов отвинтил, и конца не видно... (озадаченно) А это в какую сторону тянуть? Ну-ка... Ага, этот был лишний, этот вообще не отсюда, и этот... Точно, два болта.

Welcome to IRC

stud
Новичок
Новичок
 
Сообщения: 27
Зарегистрирован: 19.11.2002 (Вт) 19:21
Откуда: Ukraine

Сообщение stud » 03.05.2003 (Сб) 21:20

Спасибо за совет, конечно....
Но почему тогда такая штука не работает:
Код: Выделить всё
<%
           set rs = Server.CreateObject("ADODB.Recordset")
           
           rs.ActiveConnection = "DSN=spn2;"
           rs.Open "select * from main"
                     
           Do Until rs.EOF
                  Response.Write(rs.Fields("LastName")&"<br>")
                  rs.MoveNext
           Loop
         
         rs.close
         set rs=Nothing 
     
    %>
:roll:

(пример из книжки, только у них там обычная аксцессовская база без SQL Server).
Я так понимаю, что она не знает где эту самую базу искать(может данных для "поисков" недостаточно?).

Поправьте меня, что я делаю не так? :oops:

Cyrax
Cyberninja
Cyberninja
Аватара пользователя
 
Сообщения: 891
Зарегистрирован: 25.04.2002 (Чт) 21:20
Откуда: Magnitogorsk, Russia

Сообщение Cyrax » 04.05.2003 (Вс) 12:13

а в источнике данных все правильно прописано про сервер. имя сервера, проверка подлинности и т.д. может из-за этого что не так.

а если с Access'овской базой не хочет работать, то либо источник данных не создан, либо в его настройках не правильно указан путь к базе данных
Ты это ему расскажи. Я уже пять болтов отвинтил, и конца не видно... (озадаченно) А это в какую сторону тянуть? Ну-ка... Ага, этот был лишний, этот вообще не отсюда, и этот... Точно, два болта.

Welcome to IRC

stud
Новичок
Новичок
 
Сообщения: 27
Зарегистрирован: 19.11.2002 (Вт) 19:21
Откуда: Ukraine

Сообщение stud » 04.05.2003 (Вс) 19:37

В том-то и дело, что мне с аксцессовской базой работать не надо....
а в источнике данных все правильно прописано про сервер. имя сервера, проверка подлинности и т.д. может из-за этого что не так.


Незнаю, но если написать то же самое в простом VB, то все работает просто замечательно.
Например, в уже указанном выше коде написать
Код: Выделить всё

    '......... 
    Set cnn = New ADODB.Connection

    cnn.ConnectionString =  "DSN=spn2;"
    cnn.CursorLocation = adUseClient
    cnn.Open
    '........




Я вот тут думаю: в первом(работающем) случае мы обращаемся к БД "напрямую", т.е. сразу к SQL Server. А при использовании ASP нужно обратиться к ней таким образом:

ASP страница -> IIS -> SQL Server (БД)

Вопрос: она знает, что нужно делать именно так? Может ей нужно как-то дополнительно сообщить, что работать нужно через IIS, а не просто так?

Извините конечно если вопрос глупый, но сама не могу разобраться.
Да и пример по-моему не такой уж сложный, наверняка кто-то делал что-то подобное.... :roll:
Что-то мысль не приходит... Что ж, начнём без неё.
(c)Е. Кащеев

stud
Новичок
Новичок
 
Сообщения: 27
Зарегистрирован: 19.11.2002 (Вт) 19:21
Откуда: Ukraine

Сообщение stud » 06.05.2003 (Вт) 23:37

Ну вот, проблема наконец-то решена. Помогли на другом форуме(тут правда тоже есть человек, Александр Андреев, дал дельный совет, за что ему спасибо). Пришлось написать несколько писем разным незнакомым людям и перерыть кучу форумов (на многих был вопрос, но не было окончательного ответа) прежде чем докопаться до истины.
Помещаю сдесь описание "как надо", чтобы впредь на подобный вопрос можно было легко найти ответ.

Итак:

сколько я не встречал примеров доступа к БД из ASP-кода, все они использовали ODBC-источники данных.


Можно и без него, "вручную" гораздо удобней (мне), это делается таким образом:


Код: Выделить всё
Dim sSql
Set cnn = Server.CreateObject("ADODB.Connection")
With cnn
    .Provider="SQLOLEDB.1"
    .Open "SERVER=SqlSrvName;DATABASE=DBName;UID=sa;PWD=;Trusted_Connection=No;"
End With


         

sSql="select * from main"         
set rs = Server.CreateObject("ADODB.Recordset")
rs.Open Ssql, cnn
           
Do While Not rs.EOF
          Response.Write(rs.Fields("LastName")&"<br>")
          rs.MoveNext
Loop




Но почему тогда такая штука не работает


Не работала....И даже та что выше написана, тоже не работала...А все почему:

[Microsoft][ODBC SQL Server Driver][SQL Server]Login failed for user '........\IUSR_........'

или:
Login failed for user 'sa'. Reason: Not associated with a trusted SQL Server connection.

Что было надо: идентификацию Sql Server поменять на "SQL Server and Windows" вместо "Windows only" ( SQL Server Enterprise Manager -> имя сервера -> свойства -> Security ). Вот и все :lol:

Из-за не там поставленной галочки неделя времени, блин....надеюсь, пик вдохновения и работоспособности случился не на этой неделе, а еще впереди :D


Всем удачи!

ASD
Модератор
Модератор
Аватара пользователя
 
Сообщения: 1758
Зарегистрирован: 07.12.2001 (Пт) 21:08
Откуда: Russia

Сообщение ASD » 07.05.2003 (Ср) 12:08

use:

DB=server.createobject("ADODB.Connection")
RS=Server.createobject("ADODB.Recordset")

DB.Open "Driver=Microsoft Access Driver (*.mdb);DBQ=c:\my.mdb"
'Логины пароли по вкусу

Set RS=DB.execute("Select ..........")

Далее как всегда
response.write(RS("field1"))

........
Moderator VBStreets
---------------------------


Вернуться в Visual Basic 1–6

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

Сейчас этот форум просматривают: AhrefsBot, Yandex-бот и гости: 82

    TopList