Создание баз данных (или таблица данных) на языке PascalABC.NET

Значит надо просто удалить весь оффтоп. И подумать серьёзно над чатом)))))

А как же ваши прекрасные анекдоты? Над каким чатом?

Чат и мат!

Ну так а я о чем толкую последние несколько постов?:slight_smile:

Здравствуйте. Благодарю Всем, кто принял участие на форуме по обсуждение этой темы. Но все таки, давайте кто сможет, шаг за шагом создание таблиц данных в проектах на языке PascalABC.NET. Уже один помощь есть, вместе с С шарпом. Но надо както все через PascalABC.NET, чтобы обучать учащихся-отличников.

Вот отличный гайд. А в чем сложность перевода с C# на PABC.NET?

Пример перевода(первые пара примеров кода, остальные аналогично):

{$reference System.Data.dll}

uses System.Data.SqlClient;

begin
  var conn := new SqlConnection('user id=username;' + 
                                       'password=password;server=serverurl;' + 
                                       'Trusted_Connection=yes;' + 
                                       'database=database; ' + 
                                       'connection timeout=30');
                                       
  write('Done!');
end.

Так уж сложилось, что переписывать MSDN от начала до конца(а именно он и нужен в качестве документации, т.к. PABC.NET наследует все возможности .NET по умолчанию) никто не будет по причине его недюжинного размера. В такой ситуации не имеет смысла искать документации непосредственно на этом языке, и вместо этого стоит искать информацию о том, какое API по тем или иным вопросам предоставляет платформа .NET.

Если Вы хотите не детские игры с табличками, а нормальную работу с БД, надо брать какую-то СУБД, создавать в ней базу данных и уже потом работать с ней из приложения на паскале. Писать же в паскале СУБД с нуля - совершенно ненужное и бесперспективное для школьников дело. Это может быть как “база данных для дантистов и юристов” (MS Access), так и что-то более серьезное, например, на клиент-серверной платформе, тот же MS SQL. Для этой цели в случае MS Access нам надо построить интерфейс c движком этой базы и передавать ему SQL-операторы. Конечно, могут понадобиться параметры для установления соединения с БД. Собственно, механизм доступа к MS Access давно отработан.

{$reference System.Data.dll}
uses System.Data.OleDb;

begin
  var oConn:=new System.Data.OleDb.OleDbConnection;
  oConn.ConnectionString:=
    'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=H:\Temp\DBA.mdb;';
  oConn.Open;
  
  
  oConn.Close
end.

Уважаемые участники топика!

Прежде всего, спасибо JediKnight за пример - это ответ по теме топика.

Остальных я прошу отвечать ровно по теме. Ответы в стиле “Пользуйтесь языком C# или C++” - неконструктивны. Как мы могли видеть, они уводят далеко от темы и затем помещаются в разное. Ответ типа "посмотрите MSDN - здесь - и переведите на Паскаль - бесспорно, конструктивен. Ответ вида “возьмите MS ACCESS раз это простая база” - бесспорно, неконструктивен.

Я призываю вас давать здесь простые конструктивные ответы. К примеру, подключение {$reference System.Data.dll} может быть для автора топика сложным - вы ему подсказали - это здорово.

OleDb серъезно? XXI век на дворе! Эту технологию уже и MS поддерживать с 2014 года перестало.

@ahtam используйте пример @JediKnight там внутри ADO.NET, если мне память не изменяет.

С удовольствием и благодарностью посмотрю Ваш пример подключения БД MS Access через SqlClient с реализацией доступа посредством ADODB. Из VB/VBA - да, можно, хотя и там ADODB на самом деле работает с помощью… OLEDB-провайдера Вот фрагмент кода на VBA.

    Set oConn = New ADODB.Connection
    With oConn
        .Provider = "Microsoft.Jet.OLEDB.4.0"
        .ConnectionString = "H:\Temp\DBA.mdb"
        .Open
        If .State = 0 Then
            .Close
            Set oConn = Nothing
        End If
    End With

К сожалению, воспользоваться ADODB в PascalABC.NET у меня не получилось: я попросту не нашел нужной библиотеки (и стал подозревать, что её и нет).

Судя по Вашей реплике, Вы знаете, как подключиться по ADODB, засим с нетерпением жду кода.

Судя по моей реплике, технология OLE DB устарела, а значит этому не надо учить в школе. Я про подключение к БД MS Access ничего не писал. Мое личное мнение на этот счет такое: если вам надо использовать MS Access, используйте его, но если вам его не хватает настолько, что приходится писать программу на C#, то задумайтесь о переходе на другую технологию БД. В отличии от мнения об OLE DB, подкрепить весомыми доводами не могу.

@ahtam я перечитал название темы и понял, что пост @JediKnight не отвечает на вопрос как создать БД, а отвечает на вопрос, как создать подключение к существующей БД.

Вам стоит уточнить,что Вам нужно: подключиться к БД или создать БД? Честно говоря, создавать БД из C# никогда не приходилось и, судя по ответам, все участники диалога думают именно о подключении, а не о создании БД.

Кстати, Вы упомянули таблицы, так вот представление таблиц/выборок и подобного в C# это объект DataSet.

Судя по Вашему ответу, в школе нужно учить подключению к MS SQL Server, несмотря на то, его в школах нет и не изучают, а изучают MS Access, к которой подключаться не надо, но лишь потому, что Вам не нравится OLE DB. А С# тут вообще никаким боком не валялся, если что.

Как итог: Вы отказываете в праве быть какому-то “плохому” решению, не предлагая взамен никакого. Таких горе-критиков - пруд-пруди. Только реальной пользы от них, простите уж, ноль…

Что Вы на этом C# зациклились, почитайте заголовок топика, речь о PascalABC.Net. И написано там о создании базы данных или таблицы данных. Если удалось подключиться к серверу с нужными правами, то дальше не проблема выдать команду CREATE на создание базы или таблицы.

Насколько я понял, предлагалось использовать ADODB только чисто технически для установления connection а дальше работать с SQL командами того сервера, к которому подключились. MS SQL Server достаточно часто меняет способы подключения к нему, вряд ли имеет смысл учить на будущее. Вообще MySQL у меня производил впечатление более дружественной среды с точки зрения подключения самыми разнообразными способами.

PS. Я пока опасаюсь использовать PascalABC.NET для баз - нет какого нибудь аналога “стабильной” версии. Так что писал исходя из опыта Delphi, Lazarus, Visual Studio C++

Подключение выполняет конкретный объект, который использует для этого определенный драйвер. Драйвер и определяет, если хотите, “стиль” обмена между клиентом и сервером. Протокол OLEDB предполагает обмен данными через объект DataSet, ADODB - через объект RecordSet. Т.е. не суть, как мы передаем серверу SQL-команды, главное, как он возвращает данные. Через RecordSet работать понятнее и удобнее.

В PascalABC.NET, наверное, естественно использовать ADO.NET, но там DataSet.

Вы пошутили? Или это описка? Ведь только сказал, что

  • и Вы тут же о ADODB с DataSet. А еще выше я писал, что НЕ ЗНАЮ, как прикрутить ADODB в PascalABC.NET.

Я говорю о ADO.NET а не об ADODB. Судя по всему, там только DataSet http://stackoverflow.com/questions/10448225/is-a-dataset-the-same-as-a-recordset

Сударь, я не пишу на PascalABC.NET, но насколько мне известно, почти все что можно написать на C# можно написать и на PascalABC.NET. В этом и есть преимущество .NET языков.

Ну, так как это сделать никто пока еще не написал :slight_smile: Мы тут с вами спорим, а по сути вопроса ответ не дали.