sio.ui@kemguki.ru написал(а):
-------------------------------------------------------
> Пользователи у меня уже в sql. Теперь расскажите
> мне, как же в автоматическом режиме делать импорт
> в БД читателей
С использованием ManagedClient64 на C# это будет выглядеть примерно так (в предположении, что информация о читателях извлекается из Microsoft SQL Server):
using System;
using System.Data.SqlClient;
using ManagedClient;
// Соединяемся с SQL Server
string sqlConnectionString = "Server=myServerAddress;"
+ "Database=myDataBase;"
+ "User Id=myUsername;"
+ "Password=myPassword;";
SqlConnection sqlConnection = new SqlConnection
(
sqlConnectionString
);
sqlConnection.Open ();
// Подключаемся к серверу ИРБИС64
string irbisConnectionString = "host=192.168.1.1;"
+ "port=6666;"
+ "user=admin;"
+ "password=secret;"
+ "db=RDR;";
ManagedClient64 irbisClient = new ManagedClient64 ();
irbisClient.ParseConnectionString
(
irbisConnectionString
);
irbisClient.Connect ();
// Формируем запрос к SQL Server
SqlCommand command = sqlConnection.CreateCommand ();
command.CommandText = "select * from reader_table";
SqlDataReader sqlReader = command.ExecuteReader ();
// Проходим по всем считанным из SQL записям
while (sqlReader.Read ())
{
// Библиографическая запись, в которую
// будут помещены сведения о читателе
IrbisRecord irbisRecord = new IrbisRecord ();
// Извлекаем поля из SQL: фамилия, имя и т. д.
// Фамилия
string surname = (string) sqlReader ["surname"];
irbisRecord.AddField ("10", surname);
// Имя
string name = (string) sqlReader ["name"];
irbisRecord.AddField ("11", name);
// Отчество
string patronym = (string) sqlReader ["patronym"];
irbisRecord.AddField ("12", patronym);
// Год рождения
string year = (string) sqlReader ["year"];
irbisRecord.AddField ("21", year);
// Идентификатор читателя (например, номер билета)
string ticket = (string) sqlReader ["ticket"];
irbisRecord.AddField ("30", ticket);
// Пол
string gender = (string) sqlReader ["gender"];
irbisRecord.AddField ("23", gender);
// Категория
string cathegory = (string) sqlReader ["cathegory"];
irbisRecord.AddField ("50", cathegory);
// E-mail
string email = (string) sqlReader ["email"];
irbisRecord.AddField ("32", email);
// Дата записи - сегодня
string recordDate = DateTime.Today.ToString ("yyyyMMdd");
irbisRecord.AddField ("51", recordDate);
// Отсылаем в ИРБИС
irbisClient.WriteRecord ( irbisRecord, false, true );
// Выводим в консоль:
// Конвертирован читатель 123456 (Иванов Иван)
Console.WriteLine
(
"Конвертирован читатель {0} ({1} {2})",
ticket,
surname,
name
);
}
// Отключаемся от ИРБИСа и от SQL Server
irbisClient.Disconnect ();
sqlConnection.Close ();
Код весьма приблизительный и сильно упрощённый. Так, в нём отсутствует обработка ошибок и null-значений в полях SQL.
ManagedClient64 можно взять в NuGet:
https://www.nuget.org/packages/ManagedClient/, предпочтительной платформой является .NET 4.0.
Редактировано 1 раз. Последний раз 05.03.2016 05:57 пользователем amironov73.