OLE Дата Адаптер "не видит " путь к БД ?

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

Модератор: Ramzes

student-uni
Бывалый
Бывалый
 
Сообщения: 242
Зарегистрирован: 01.10.2005 (Сб) 18:54

OLE Дата Адаптер "не видит " путь к БД ?

Сообщение student-uni » 11.07.2006 (Вт) 11:57

Вот простеишии код которыи работает, если аксесс БД в директории приложения

Код: Выделить всё
   Dim oOleDbConnection As OleDbConnection
    Dim da As OleDbDataAdapter
   
       Dim DatenBank As String = "datenbank.mdb"
        Dim ppp As String = "myPass"
        myConnStr = "Data Source = " + DatenBank + " ;Jet OLEDB:Database Password=" + ppp + ";User ID=Admin;"
        oOleDbConnection = New OleDbConnection(myConnStr)
        da = New OleDbDataAdapter("SELECT user.id, user.login, user.passwort, user.admin FROM datenbank.user", oOleDbConnection)


        Dim ds As New DataSet
        'oOleDbConnection.Open()
     
        da.Fill(ds)





Проблема - хочу использовать БД когда она лежит в другои директории.
Для етого прописываю полныи путь в строке соединения, но етого оказывается не достаточно !!!

Dim DatenBank As String = "C:\BLA\BLA\datenbank.mdb"


Надо еше прописать полныи путь после FROM

da = New OleDbDataAdapter("SELECT user.id, user.login, user.passwort, user.admin FROM C:\BLA\BLA\datenbank.user", oOleDbConnection)

Иначе коннектор то коннектится к указаннои БД

( 'oOleDbConnection.Open() - OKEY)

а ДатаАдаптер продолжает искать MDB по прежнему в текущеи дитректории

Но если я хочу этот же запрос использовать с MSSQL то мне полныи путь после FROM сто лет не нужен

Вопрос: как правильно написать строку SELECT FROM чтоб она работала и для Аксесс и для SQL ?

baha76
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 168
Зарегистрирован: 07.01.2004 (Ср) 10:59
Откуда: Ташкент

Сообщение baha76 » 12.07.2006 (Ср) 13:03

"datenbank.user" имя таблицы в базе или имя файла?

student-uni
Бывалый
Бывалый
 
Сообщения: 242
Зарегистрирован: 01.10.2005 (Сб) 18:54

Сообщение student-uni » 12.07.2006 (Ср) 17:23

Да, я уже понял, надо писать просто [user] причём в квадратных скобках, тк это зарезервированное слово под МС СКЛ.
в этом случае датаадаптер ищет базу упомянутую в Коннекшн стринг.

Если написать просто datenbank.user то он ищет базу datenbank в текущей директории если это аксесс, а не ту что упомянута в коннекшн стринг.

Привет.

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

Сообщение Thomas » 23.09.2006 (Сб) 14:10

student-uni
Привет.
Вообще то, по моему, нужно писать примерно так:

задекларировать соединение с БД
Dim con as OleDbConnection=new OleDbConnection() это в VB или
private OleDbConnection con = new OleDbConnection(); в C#.
так же нужно декларировать
cmd as OleDbCommand = new OleDbCommand();
da as OleDbDataAdapter = new OleDbDataAdapter();
ds as DataSet = new DataSet();

Это уже пишешь в Sub
далее ты должен указать тип и путь соединения
con.ConnectionString = "provider=Microsoft.Jet.oledb.4.0;" +
"data source=D:\vti\Margo\nwind.mdb;" это для VB
con.ConnectionString = "provider=Microsoft.Jet.oledb.4.0;" +
@"data source=D:\vti\Margo\nwind.mdb;"; это для C#

cmd.CommandText = "select * from [здесь имя таблицы]"; а вместо * указывай поля таблицы которые нужно показывать
cmd.Connection = con;
da = new OleDbDataAdapter(cmd);
da.Fill(ds, "имя таблицы");
далее пишешь код того что должно произойти, а потом закрой соединение con.Close()

PS может еще интересно.


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

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

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

    TopList  
cron