Отправляет email-рассылки с помощью сервиса Sendsay

Программирование. Форум !!!

Re: Low-Level DB

Аллоха, All!
А я вот щас как сморожу очередную глупость:

Хочется в программе сделать поддержку прав, прога вообще без формы
(даже на чистом API). Я так подумал что проще всего хранить юзеров,
пароли и права в базе, чем создавать велосипеды с record-ами, тем
более что удалять из файла с record-ами геморройно. Впрочем я отвлекся :)

Я хочу реализовать в своей программе работу с базами без всяких
компонентов, на низком уровне. Но т.к. в базах я ПОЛНЫЙ профан, я
остановился в самом начале - создание базы, выбор из нее записи о
юзере и вытаскивания из нее его прав, редактирование базы.
При всех этих проблемах я еще одну себе добавил - желательно чтобы
база работала на MSSQL Server, насколько я понял он есть во всех
виндовозах от win98 (если тупость написал - сильно не пинать, лучше
подскажите базу которая есть во всех виндовозах без всяких MS Office)
В общем пока насочинял/натырил вот такой код (ниже). Он производит
открытие базы + чего-то там выбирает из нее.
Вот вопросы по этому коду:
1) Что писать в MyConn.ConnectionString для MSSQL (ну или что вы
посоветуете)?
2) Как получить записи которые после MyRecSet.Open(...); лежат
(насколько я понял) где-то в MyRecSet? Изыскания с
MyRecSet.GetString(...); ни к чему не привели т.к. документации по
этой функции я не нашел, а телепатическими способностями я не
обладаю.
3) Как в таком же духе создавать таблицы, изменять добавлять?

PS: База будет состоять из полей (ну как минимум на первых порах):
UserName UserPassword - обычные стринги + поле UserRights -
многострочная запись

program Project1;
{$APPTYPE CONSOLE}
uses
Windows,
adoint,
ActiveX;

var
MyConn: _Connection;
MyCommand: _Command;
MyRecSet: _Recordset;
OptionalParam: OleVariant;
VarData: PVarData;
begin
OptionalParam := DISP_E_PARAMNOTFOUND;
VarData := @OptionalParam;
VarData^.VType := varError;
CoInitialize(nil);

MyConn := CoConnection.Create;
MyConn.ConnectionString := 'Provider=MSDataShape.1;Data Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=C:\Program Files\Common Files\Borland Shared\Data\dbdemos.mdb';
MyConn.Open(MyConn.ConnectionString, '', '', - 1);
MyCommand := CoCommand.Create;
MyCommand.Set_ActiveConnection(MyConn);
MyCommand.CommandText := 'SHAPE {select * from customer} ' +
'APPEND ({select * from orders} AS Orders ' +
'RELATE CustNo TO CustNo) ';
MyRecSet := CoRecordSet.Create;

MyRecSet.Open(MyCommand, OptionalParam, adOpenDynamic, adLockReadOnly, adCmdText);
Writeln(MyRecSet.RecordCount);
Writeln(MyRecSet.Get_Source);
//Writeln(string(MyRecSet.GetString(0, 5, ';', ':', 'ALL')));
readln;
CoUnInitialize;
end.

Ответить   Tue, 7 Jun 2005 16:18:39 +0500 (#380146)

 

Ответы:

i686-suse-linux)

Hello, Александр!

On Tue, 7 Jun 2005 16:18:39 +0500 you wrote:

Хе, MSSQL Server - 190 тыс. руб. за однопроцессорную лицензию.
Нету в винде sql-сервера по умолчанию.
А тягать с собой MySQL (или что еше хуже Posgres) - это конечно
благородное занятие, но для таких задач бессмысленное.

Ответить   "B." Tue, 7 Jun 2005 19:20:01 +0400 (#380353)

 

Хаю ду ю ду B.?

Смотрю и вижу, как ты печатаешь умные вещи и дай-ка, думаю,
тоже что-нибудь напечатаю:

Ну я же сразу предупредил: "может тупость скажу" :)
А какие бесплатные *ВСТРОЕННЫЕ* в windows базы данных (сервер)
встроены?
+ Желательно код как с ними работать.

Ответить   Wed, 8 Jun 2005 09:13:59 +0500 (#380672)

 

Здравствуйте, Александр.

Вы писали 8 июня 2005 г., 10:13:59:

С NT идет драйвер БД к Аксесу подходит, все что я знаю..

Ответить   Wed, 8 Jun 2005 09:42:45 +0600 (#380678)

 

Hello monah,

Wednesday, June 8, 2005, 9:42:45 AM, you wrote:

Полноценных втроенных систем управления базами данных в Windows 9*,NT
нет.

С помощь универсальной, кросплатформенной системы OBDC можно
подключится к некоторым типам файлов, несущих в себе данные - типа MS
Access, InterBase, Paradox, DB2...

А вообще, во всех приличных СУБД есть возможность встраивания в
программу "мини-реализации" сервера в виде "подключаемой" dll
библиотеки. Например под MySQL совсем нет необходимости тащить с собой
полнофункциональный сервер, достаточно использовать идущую с сервером
библиотеку libmysqld. API интерфей подробнейшим образом описан в
документации.

Ответить   andrey Wed, 8 Jun 2005 11:15:12 +0600 (#380979)

 

Хаю ду ю ду andrey?

Смотрю и вижу, как ты печатаешь умные вещи и дай-ка, думаю,
тоже что-нибудь напечатаю:

Надо будет глянуть...

Ответить   Wed, 8 Jun 2005 21:55:09 +0500 (#381152)

 

Хаю ду ю ду Александр Томилов?

Смотрю и вижу, как ты печатаешь умные вещи и дай-ка, думаю,
тоже что-нибудь напечатаю:

Глянул...
Сервер-то все равно должен где-то присутствовать.
MySQL мне не подходит

Ответить   Thu, 9 Jun 2005 16:17:47 +0500 (#381593)

 

Всем привет.

А вопросик. А куда торговый агент отправляет платежки?
Я к тому, что если через инет, так может уже и веб-приложение заделать без всяких
ограничений? Требования к клиенту - интернет, браузер и руки произвольной кривизны
;)

За сим прощаюсь. Юрий Истомин.

Номер выпуска : 4645
Возраст листа : 633 (дней)
Количество подписчиков : 525
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/385043
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

Ответить   Wed, 15 Jun 2005 04:24:45 +0400 (#385043)

 

Hello Юрий,

Wednesday, June 15, 2005, 6:24:45 AM, you wrote:

Блин, ребята... обсуждаете всякое, вместо того, что бы документацию
почитать.
Я уже упоминал о том, что есть возможность в произвольную программу
ВСТРОИТЬ СЕРВЕР MySQL (да и у всех серьезных серверов есть такое
решение) путем подключения динамических библиотек.
То есть сервер как раз и есть - это ВАША программа.
А смотреть надо не по диагонали... ;-)

всяких

кривизны

Кстати, программа со встроенным сервером отлично может слушать порты и
в "интернет-решении".

Ответить   andrey Wed, 15 Jun 2005 15:08:30 +0600 (#385516)

 

Хаю ду ю ду andrey?

Смотрю и вижу, как ты печатаешь умные вещи и дай-ка, думаю,
тоже что-нибудь напечатаю:

Да я уже решил - работать с базами буду через ADO

Ну там по ангельски было написано - неохота было вчитываться ;)

Ответить   Fri, 17 Jun 2005 00:22:40 +0500 (#386168)

 

Хаю ду ю ду Юрий Истомин?

Смотрю и вижу, как ты печатаешь умные вещи и дай-ка, думаю,
тоже что-нибудь напечатаю:

Ээээ, а у меня никаких агентов нету :)

всяких

кривизны

Нее, я делаю Windows Socket Server :)

Ответить   Fri, 17 Jun 2005 00:20:32 +0500 (#386170)

 

Александр Томилов пишет:

Глянь FireBird, там сервера не надо.

Ответить   Oleg Ponomarev Mon, 13 Jun 2005 13:52:59 +0300 (#384153)

 

Хаю ду ю ду monah?

Смотрю и вижу, как ты печатаешь умные вещи и дай-ка, думаю,
тоже что-нибудь напечатаю:

Тот код который я привел вроде, как мне подсказали, и есть Access,
кстати только что проверил - в win98 тоже работает.

Отстается вопрос - как получить выбранные данные?

Ответить   Wed, 8 Jun 2005 20:13:05 +0500 (#381125)

 

Здравствуйте, Александр.

Вы писали 8 июня 2005 г., 21:13:05:

Юзай не визуальные компоненты TQwery например... создавай их вручную.

Ответить   Wed, 8 Jun 2005 23:28:06 +0600 (#381192)

 

Хаю ду ю ду monah?

Смотрю и вижу, как ты печатаешь умные вещи и дай-ка, думаю,
тоже что-нибудь напечатаю:

Я хочу обойтись без компонентов

Ответить   Thu, 9 Jun 2005 00:53:18 +0500 (#381243)

 

Здравствуйте !


В винды самих СУБД никаких не встроено.
Встроены средства работы с базами данных.
Самое старое средство - драйвера ODBC - есть даже в 95-х
виндах. Для работы через ODBC существует ODBC API - набор
функций таких как SQLAllocHandle, SQLConnect, и прочие SQL...
Есть DAO. Это уже набор COM - компонентов. Соответственно работать
через интерфейсы.
Есть ADO - встроена в винды начиная с Win2000 (правда, можно
и в предыдущих версиях виндов использовать, но надо качать и
устанавливать отдельно). Это тоже набор COM - компонентов.

С помощью любого из этих средств можно создать БД "с нуля",
создать в ней таблицы, занести, считать данные.

--
С уважением, Вахтуров Виктор.

Номер выпуска : 4586
Возраст листа : 626 (дней)
Количество подписчиков : 527
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/380988
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

Ответить   Wed, 8 Jun 2005 16:25:37 +0400 (#380988)

 

Привет B.,

Вы мне письмо написали 7 июня 2005 г. (вторник), а я Вам отвечу вот что:

Я уже говорил на этом форуме о такой веще как MS Jet, есть по крайней
мере в WinXP и в Win2k. В 98 не знаю. Не требует инсталяции СУБД и
база в одном файле - удобно. Подключение через ADO.

Афоризм напоследок: Берегись программистов отвертки носящих.
Winamp глаголит: DR. ALBAN IT'S MY LIFE
8 июня 2005 г. 19:18:25

Просто студент
Eugene mailto:rav***@o*****.ru

Номер выпуска : 4589
Возраст листа : 626 (дней)
Количество подписчиков : 527
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/381106
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

Ответить   Wed, 8 Jun 2005 19:27:52 +0400 (#381106)

 

Хаю ду ю ду Eugene the Monster?

Смотрю и вижу, как ты печатаешь умные вещи и дай-ка, думаю,
тоже что-нибудь напечатаю:

А кто-нибудь вообще обратил внимание на код который я привел?

MyConn.ConnectionString :=
'Provider=MSDataShape.1;Data Provider=Microsoft.Jet.OLEDB.4.0;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

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

Ответить   Wed, 8 Jun 2005 21:52:18 +0500 (#381135)

 

Здравствуйте, Александр,

Обратил!!

Для доступа к записи там, в АДО есть RecordSet - набор данных,
формируется по запросу, насколько я помню. Для создания таблиц, тоже
можно использовать запросы.
А в принципе все компоненты АДО - просто оболочка для реализации
интерфейсов...
У RecordSet есть все нужные свойства, для доступа к записям. Примеров,
рабочих извини нету, но в одной книжке нашел, может понятие будет:

var
MyConn:Connection;
MyComm: command;
MyRec: Recordset;
prm1: parameter;
begin
MyConn:=CoConnectoin.Create;
MyConn.ConnectionString:='...';
MyConn.open('','','',-1);
MyComm:=CoCommand.Create;
MyComm.ActivaConnection:=MyConn;
MyComm.CommandText:='select * from TableMy where BlahID=?';
Prm1:=MyComm.CreateParameter('id', adInteger.adParamInput, -1,
<value> );
MyComm.appendParameter(prm1);
MyRec:=CoRecordSet.create;
MyRec.Open(MyComm, OptionalParam, adOpenDynamic, adLockReadOnly,
adCmdText);
end;
Вот и все что есть.

Ответить   Thu, 9 Jun 2005 08:41:24 +0600 (#381374)

 

Хаю ду ю ду Шистеров Павел?

Смотрю и вижу, как ты печатаешь умные вещи и дай-ка, думаю,
тоже что-нибудь напечатаю:

Но не посмотрел :) Твой код один в один с моим

А с помощью каких функций и каких параметров к ним выбить из RecordSet
данные - вот что мне очень интересно.

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

Ответить   Thu, 9 Jun 2005 13:37:20 +0500 (#381513)

 

Здравствуйте, Александр,

Thursday, June 9, 2005, 2:37:20 PM, вы писали:

Методы MoveFirst, MoveNext и т.д.
Поля через Fields. Только выбор не по имени, а по индексу, если
напрямую с АДО работать.
В принципе можно попробовать работать через TDataSet.

Ответить   Thu, 9 Jun 2005 15:41:28 +0600 (#381569)