Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.05.2010, 15:10   #11
Баламут
Баламучу слегка...
Участник клуба
 
Аватар для Баламут
 
Регистрация: 01.11.2006
Сообщений: 1,585
По умолчанию

На самом деле создать базу достаточно просто. Для Access это выглядит следующим образом. Для начала импортируем библиотеку Microsoft ADo Ext xxx. Далее привожу для Д2010. Для Д7 будет немного отличаться, но не принципиально. Component -> Import component -> Import type library -> Microsoft ADo Ext. Далее пишем код

Код:
uses .... ADOX_TLB...

procedure TForm1.Button1Click(Sender: TObject);
var
  Catalog: _Catalog;
begin
//Создаем саму базу
 Catalog := coCatalog.Create;
 Catalog.Create('Provider=Microsoft.Jet.OLEDB.4.0;Data Source = test.mdb');

//Создаем таблицу
 ADOConnection1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source = test.mdb';
 ADOConnection1.Connected := true;

 ADOConnection1.Execute('CREATE TABLE testBD (id AUTOINCREMENT PRIMARY KEY, aName VARCHAR(100))');
end;
Вот собственно и все. Для случая с MS SQL Server еще проще. Просто коннектимся к базе Master и выполняем SQL-скрипт для создания базы.

Для выбора подключения пишем следующее

Код:
uses ADOConEd

procedure TForm1.Button2Click(Sender: TObject);
begin
  EditConnectionString(ADOConnection1);
end;

Последний раз редактировалось Баламут; 21.05.2010 в 16:54.
Баламут вне форума Ответить с цитированием
Старый 21.05.2010, 16:16   #12
norfonzor
Пользователь
 
Регистрация: 28.04.2010
Сообщений: 20
По умолчанию

ммм мне немного не то соединение надо. Мне надо загрузить БД из файла для ее просомтра/редактирования/сохранения. я нашел код создания новой БД:
Код:
function CreateAccessDatabase(FileName: string): string;
 var
    cat: OLEVariant;
 begin
   Result := '';
   try
     cat := CreateOleObject('ADOX.Catalog');
     cat.Create('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + FileName + ';');
     cat := NULL;
   except
     on e: Exception do Result := e.message;
   end;
 end;
как мне ее сохранить?

Последний раз редактировалось norfonzor; 21.05.2010 в 16:18.
norfonzor вне форума Ответить с цитированием
Старый 21.05.2010, 16:18   #13
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

При создании базы вы же знаете (ну или программа знает) имя файла и путь к нему, ну и соединяйтесь по этому пути FileName как я понимаю
vovk вне форума Ответить с цитированием
Старый 21.05.2010, 16:39   #14
norfonzor
Пользователь
 
Регистрация: 28.04.2010
Сообщений: 20
По умолчанию

Уау. Баламут, код работает =) и база сама сохраняется
а как сохранить и открыть ее с паролем?
norfonzor вне форума Ответить с цитированием
Старый 21.05.2010, 16:50   #15
Баламут
Баламучу слегка...
Участник клуба
 
Аватар для Баламут
 
Регистрация: 01.11.2006
Сообщений: 1,585
По умолчанию

Цитата:
Сообщение от norfonzor Посмотреть сообщение
а как сохранить и открыть ее с паролем?
Ну тут немного муторно, но не сложно. Во-первых, для задания пароля на базу пишем что-то вроде этого

Код:
 ADOConnection1.Execute('ALTER DATABASE PASSWORD Старый_пароль Новый_пароль')
При этом не забываем про синтаксис SQL и null. А открыть запароленную базу можно с помощью строки подключения примерно такого содержания: 'Provider=Microsoft.Jet.OLEDB.4.0;D ata Source= %s; Password=%s';, где вместо %s ставим имя базы и пароль, соответственно.
Баламут вне форума Ответить с цитированием
Старый 21.05.2010, 18:17   #16
norfonzor
Пользователь
 
Регистрация: 28.04.2010
Сообщений: 20
По умолчанию

вот что у меня получилось:
Код:
procedure TFrmMain.BitBtn1Click(Sender: TObject);
var
  Catalog: _Catalog;
begin
 Catalog := coCatalog.Create;
 Catalog.Create('Provider=Microsoft.Jet.OLEDB.4.0;Data Source = testpass.mdb');
 ADOConnection1.Execute('ALTER DATABASE PASSWORD 123');


 ADOConnection1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source= testpass.mdb; Password=123';

end;
Да еще при загрузке появляется окно:

где в имя надо вводить Admin. Как его убрать? Да и создать БД с паролем не получается, появляется ошибка, я что то не так сделал. Да еще если исходного пароля нет то его не писать?
norfonzor вне форума Ответить с цитированием
Старый 21.05.2010, 21:40   #17
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

Цитата:
Да еще при загрузке появляется окно:
ADOConnection1.loginpromt:=false
vovk вне форума Ответить с цитированием
Старый 22.05.2010, 02:59   #18
Баламут
Баламучу слегка...
Участник клуба
 
Аватар для Баламут
 
Регистрация: 01.11.2006
Сообщений: 1,585
По умолчанию

Цитата:
Сообщение от norfonzor Посмотреть сообщение
Да и создать БД с паролем не получается, появляется ошибка, я что то не так сделал. Да еще если исходного пароля нет то его не писать?
Внимательно перечитать мой пост. Я не просто так сказал о null.
Баламут вне форума Ответить с цитированием
Старый 22.05.2010, 03:29   #19
norfonzor
Пользователь
 
Регистрация: 28.04.2010
Сообщений: 20
По умолчанию

вместе пустого пароля поставить nil =) попробую
везде уже вставлял строку и всячески менял ее
Код:
ADOConnection1.Execute('ALTER DATABASE PASSWORD nil, 123');
появляется ошибка и все.
Баламут, может код целиком дать что и зачем и почему у меня не получается его сделать.

Последний раз редактировалось norfonzor; 22.05.2010 в 14:58.
norfonzor вне форума Ответить с цитированием
Старый 22.05.2010, 21:08   #20
norfonzor
Пользователь
 
Регистрация: 28.04.2010
Сообщений: 20
По умолчанию

Мда еще 1 вопрос:
если мне необходимо вставить данные в таблицу то в SQL это делает так:
Код:
INSERT INTO table_name(field_name1, field_name2) values('Content1','Content2')
в делфи эту команду помещаю в
Код:
ADOConnection1.Execute('');
делфи знак " ' " распознает как символ конца/начала строки и не получается добавить запись. подскажите пожалуйста как добавить записи в таб ?
norfonzor вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Начать работу с Code::Blocks Koluna Софт 15 29.05.2010 17:55
Начать работу с БД, ADO, SQL norfonzor Общие вопросы Delphi 0 20.05.2010 10:41
ADO + MS SQL + Delphi Mixasik БД в Delphi 13 08.07.2009 21:35
ADO + SQL Server. Как правильно организовать одновременную работу с таблицей Mouse123 БД в Delphi 17 04.07.2008 17:35