Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Базы данных под .NET > InterBase


Автор: Хоббит 14.11.2005, 17:49
Надо подключиться к серверу InterBase и дальше выполнять sql команды (Создание БД удаление создание таблицы , добавление записи и.т.д.). InteBase по моемому 6 или 6.5 .... как это ваще сделать.
Нужно ли натсраивать адаптер данных sql или нет?
Подскажите плиз. Какие обьеты создавать и что писать?

Автор: Exception 14.11.2005, 18:27
поищи interbase-адаптер для .нет.
а потом работай с ним как с любым др.

Автор: Хоббит 14.11.2005, 19:16
поискать? .... в Инете штоли?

Автор: Хоббит 14.11.2005, 19:57
ага ... нашел и поставил проводник данных для InterBase .... IBPROVIDER ... потом в c# добавил на форму Ole DB Data Adapter // при настройке соединения указал этот IBPROVIDER базу данных имя и пароль.
По реакции файервола вроде к базе данных я конекчусь .. как теперь что либо выполнить например создать таблицу в базе данных .. create table bd(name varchar(15));

Код

oleDbConnection1.ConnectionString = @"Provider = LCPI.IBProvider; User ID = SYSDBA; Password = masterkey; 
                Data Source = localhost:d:\bd.gdb;";
            oleDbConnection1.Open();
            oleDbDataAdapter1.SelectCommand.Connection = oleDbConnection1;
            oleDbDataAdapter1.SelectCommand.CommandText = "create table bd(name varchar(15));";
            oleDbDataAdapter1.SelectCommand.ExecuteNonQuery();            

Это выдает ошибку

Автор: Exception 14.11.2005, 23:29
1. какую?
2. лучше не OleDb юзать а найти IB - .NET connector..
поищи в нете

Автор: Hidrag 15.11.2005, 08:26
Run-time error так он через OleDB и соединяется, даже на сайте ихнем вроде так написано.


Хоббит в System.Data и System.Data.OleDb есть все для работы с БД просто разберись с ADO.NET и все получится, там ничего сложного...

Автор: Guest 15.11.2005, 19:02
.... с БД может и есть .... а именно с Inter Base сервер .....
... если кто пробывал .... соединиться .. там надо то несколько строк прописать ... может кто знает каких?

Автор: Хоббит 15.11.2005, 21:31
неужели никто не писал программы аботы с InterBase //// ну дайте хоть пример

Автор: Kurt 16.11.2005, 04:16
Хм.. не совсем понимаю, что Вас интересует.
Я как-то игрался с Firebird/Interbase через http://www.firebirdsql.org/index.php?op=files&id=netprovider.
Особых проблем не заметил.
У Вас есть какие-нибудь конкретные вопросы? Пожалуйста, задавайте. Кстати, если не ошибаюсь, вместе с этим датапровайдером ставится reference по его классам. Там есть примеры, указание, какие должны быть ConnectionString'и и т.п. ;)

Автор: Hidrag 16.11.2005, 07:55
Цитата

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

>Можно использовать OLE DB Provider для Interbase// IBProvider www.ibprovider.com

Можно, но работает он кривовато, по крайней мере бесплатная версия, тем более, разработчики грозятся, что она обязательно перестанет работать неизвестно когда и без дополнительного предупреждения.

Бесплатная версия Ib-OLE DB провайдера, достаточно удачная (пока особых проблем не доставила) есть на www.zstyle.dp.ua.


Что касается ODBC провайдера для ADO.NET от самого Мелкософта, то он ведь совершенно честно заявил, что с Интербейзом он не тестировался (читай: "не рекомендовано к использованию"). Так и есть - подключиться можно, и по началу всё шло нормально, но впечатление испортили "мелкие пакости" (например, генерится исключение, если в поле VARCHAR 128 пустая строка и т.п.). Может, это ещё от версии самого интербейза зависит... в общем, сам я пока остановился на указанном выше Ib OLE провайдере (халявном), дальше - поглядим, возможно, придется покупать...


взято с http://www.gotdotnet.ru/Forums/Data/15647.aspx

а тут новость по этому поводу: http://www.wn.ru/computers/24.06.2003/2.html

Автор: Хоббит 16.11.2005, 10:25
проблема в том что не получается smile
Качал и Ole DB Provider и Ib Ole DB ... соединение с базой данных устанавливал а.. вот выполнить sql запрос никакой не могу (см. пример программы выще)

И вообще соеденившись с Inter Base сервером ... можно ли выполнять из c# такие запросы как "create database " или "create table..."

Автор: Exception 16.11.2005, 19:35
а ты проверь и узнаешь..

Автор: Хоббит 16.11.2005, 21:06
проверил ... получается что нельзя .. или я ошибся?

Автор: Kurt 18.11.2005, 16:49
Народ, вы меня пугаете:
Код

using System;
using FirebirdSql.Data.Firebird;

namespace fbtest0
{
    /// <summary>
    /// Summary description for FBTest.
    /// </summary>
    class FBTest
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main(string[] args)
        {
            String tableName;
            Console.WriteLine("Имя таблицы: ");
            tableName = 
                Console.ReadLine();

            FbConnection connection = new FbConnection(@"Database=G:\Ignat\my_ex\my_Firebird\PROBA.FDB;User=SYSDBA;Password=masterkey;Dialect=3;Server=localhost");
            try
            {
                connection.Open();
                FbTransaction transaction = connection.BeginTransaction();
                FbCommand cmd = new FbCommand("create table "+tableName+" (c1 int, c2 int)", connection, transaction);
                cmd.ExecuteNonQuery();
                transaction.Commit();
                connection.Close();
                Console.WriteLine("Сделано! Смотрите базу!");
            }
            catch(Exception){};
            Console.ReadLine();
        }
    }
}


Как видите, таблицы совершенно спокойно создаются.

Автор: Хоббит 23.11.2005, 21:55
э ... а какой провайдер данных использовал .. то есть что качал и устанавливал .. перед всем этим
... До сих пор ничего не получается

Автор: Kurt 24.11.2005, 04:04
http://www.firebirdsql.org/index.php?op=files&id=netprovider

Автор: Хоббит 24.11.2005, 15:23
а этот провайдер будет работать с ШИ сервером? ....
я вот нашел FireBird провайдер for Net 1.1 а у меня Net 1.0 и ставиться не хочет гад.

Автор: Kurt 24.11.2005, 16:49
Этот датапровайдер, вроде, и с Interbase работает. Особо этой СУБД не пользовался, но Firebird'овый провайдер подключался.
По поводу .NET 1.0, увы, ничего сказать не могу.
Советую Вам поставить 1.1. smile

Автор: Хоббит 24.11.2005, 19:52
1.1 framework поставить то я поставил .. а как заставить Visual Studio с ним работать?
Добавлено @ 19:54
Поставил VS 2005 с framework 2.0... и FireBird Provider for Net 2.0 .... создаю соединение с базой данных ... в поле выбора провайдера есть только Microsoft sql server и microsoft access /// ... а где же мой Fire Bird?

Автор: Kurt 25.11.2005, 03:42
Цитата
Поставил VS 2005 с framework 2.0... и FireBird Provider for Net 2.0 .... создаю соединение с базой данных ... в поле выбора провайдера есть только Microsoft sql server и microsoft access /// ... а где же мой Fire Bird?

Так, стоп. Какое соединение? Где создаешь? Имеешь ввиду дизайнер студии? Я предпочитаю это все ручками делать.
Настоятельно рекомендую тебе сначала создать простое консольное приложение. Ручками создать соединение, выполнить select и закрыть. Без всяких дизайнеров. Это более чем полезно. заодно и проверишь, работает ли датапровайдер.


З.Ы. Только не забудь добавить reference на FirebirdSql.Data.Firebird.dll и добавить соотв. строчку "using.."

Автор: Хоббит 25.11.2005, 18:34
...люди ... вместе с вышедшем Delphi 2005 // вышел набор компонетов для Inter Base ... под NET .... а их нельзя перенести в VS
Добавлено @ 18:35
понятно ... а какую соответстующею using добавить?

Автор: Kurt 25.11.2005, 19:02
Цитата
понятно ... а какую соответстующею using добавить?


Блин, я говорю о строчке
Код

using FirebirdSql.Data.Firebird;

Не забудь ее добавить в начале кода!

Автор: Хоббит 26.11.2005, 17:43
.... Ура .. все получилось .... правда использовал FireBird for NET 2.0 и Visual Studio 2005.
Огромное спасибо Kurt за помощь.

Правда еще 2 вопроса осталось. Можно ли из программы создавать базы данных. И можно ли перенести Делфовские NET компонеты для InterBase в VS

Автор: Хоббит 26.11.2005, 18:44
Замучли наврено вопросами. После соединения с базой данных как узнать какие в ней есть таблицы. Название таблицы необходимо знать для создания обьекта DataAdapter.
И нельзя ли сразу записать всю таблицу в обьект DataSet и работая с ним получить все значения.

Автор: Хоббит 27.11.2005, 20:33
И вообще моно ли узнать об именах колонок в таблице не считывая из нее информации?

Автор: Kurt 27.11.2005, 21:06
Хоббит
Правила форума гласят:
"Один топик - один вопрос". Давай будем их придерживаться smile
Ведь потом другим будет проще найти нужную информацию.
..
Цитата
После соединения с базой данных как узнать какие в ней есть таблицы
...
И вообще моно ли узнать об именах колонок в таблице не считывая из нее информации?

100% можно. Ведь всякие там database-менеджеры типа IBExpert'а это легко делают. Мне кажется, это можно сделать, изучив системные таблицы и предопределенные хранимые процедуры Interbase. К сожалению, на что именно обратить внимание сказать не могу - увы, как-то не приходилось сталкиваться. Попробуй спросить в разделе Interbase.

Цитата
Можно ли из программы создавать базы данных

Опять же думаю, что да. Ведь IBExpert это делает. Значит, должен существовать некий интерфейс для создания базы.

Автор: Хоббит 29.11.2005, 18:11
разобрался .... в общем вместе с таблицой хранятся системные таблицы с информацией обо всем этом ... имена RDB$RELATION (инф. о таблицах) и RDB$FILDS (инф. о полях)

Автор: lovermann 9.1.2006, 00:43
Список всех таблиц и view в базе данных
Код

SELECT RDB$RELATION_NAME FROM RDB$RELATIONS;


Список только пользовательских таблиц и view:
Код

SELECT RDB$RELATION_NAME FROM RDB$RELATIONS WHERE RDB$SYSTEM_FLAG = 0;


А этот запрос выдаст список только пользовательских таблиц:
Код

SELECT RDB$RELATION_NAME FROM RDB$RELATIONS WHERE RDB$SYSTEM_FLAG = 0 AND RDB$VIEW_BLR IS NULL;





Автор: Exception 9.1.2006, 03:54
В FAQ засуньте.

Автор: mr.DUDA 9.1.2006, 08:57
Цитата(Exception @ 9.1.2006, 02:54 Найти цитируемый пост)
В FAQ засуньте.

Готово. Только там ФАК какой-то... ну, мягко говоря, неудобный smile

Автор: Akella 13.10.2006, 10:55
Kurt, проблема

Код

using System;
using FirebirdSql.Data.Firebird; <-ругается на это строку

/*

The type or namespace name 'FirebirdSql' could not be found (are you missing a using directive or an assembly reference?)

*/

using System.Collections.Generic;
using System.Text;


поставил 
.NET 2.0
Visual Studio 2005
Version 2.0.1 RC2 for .NET 2.0
DDEX Provider for Visual Studio 2005

документации нет  , помогите, народ, хочу для начала написать хотябы телефонный справочник

есть книга Тролсена, но она не для новичков, ничего там не понятно. smile  

Автор: mr.DUDA 13.10.2006, 11:06
Похоже, не хватает референса на длл-ку FirebirdSql.Data.xxx (точное имя зависит от провайдера для FB, у нас например юзают http://prdownloads.sourceforge.net/firebird/FirebirdClient-2.0.exe?download).

Автор: Akella 13.10.2006, 11:16
Цитата(mr.DUDA @  13.10.2006,  11:06 Найти цитируемый пост)
у нас например юзают этот пров). 


Цитата(Akella @  13.10.2006,  10:55 Найти цитируемый пост)
Version 2.0.1 RC2 for .NET 2.0

я тоже

Добавлено @ 11:24 
Цитата(mr.DUDA @  13.10.2006,  11:06 Найти цитируемый пост)
Похоже, не хватает референса на длл-ку FirebirdSql.Data.xxx 

если создаю не консольный проект, а обычный виндовы, то щелкнув мышей на палитре компоненты и выбрав Choice Items, то там есть компоненты FB, ставлю напротив них галку и вывожу в палитру

Добавлено @ 11:26 
и вот только после того как кину в проект компоненту
MSVS2005 не ругается на строку
Код

using FirebirdSql;


Автор: mr.DUDA 13.10.2006, 13:22
Цитата(Akella @  13.10.2006,  11:16 Найти цитируемый пост)
если создаю не консольный проект, а обычный виндовы, то щелкнув мышей на палитре компоненты и выбрав Choice Items, то там есть компоненты FB, ставлю напротив них галку и вывожу в палитруДобавлено @ 11:26 и вот только после того как кину в проект компонентуMSVS2005 не ругается на строку

при добавлении компонента с тулбокса, студия добавляет необходимые референсы... то же самое можно и из меню "Add reference..." сделать.

Автор: Akella 13.10.2006, 14:01
Цитата(Akella @  13.10.2006,  10:55 Найти цитируемый пост)
Kurt, проблема

    
using System;
using FirebirdSql.Data.Firebird; <-ругается на это строку


решил так:
меню "Data -> Add new datasource- > Object -> Add Reference -> закладка .NET -> выбрал FireBird Client - ADO.NET Provider -> Ok -> Finish"
тогда только MSVS перестала ругаться на using FirebirdSql.Data.Firebird

Добавлено @ 14:02 
mr.DUDA, да, тоже самое нашёл и в Project -> Add Reference

Автор: Akella 17.10.2006, 14:13
Цитата(Хоббит @  14.11.2005,  17:49 Найти цитируемый пост)
(Создание БД 

http://www.dotnetfirebird.org/blog/2005/01/creating-database-programmatically.html

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)