powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Perl+SQL
3 сообщений из 3, страница 1 из 1
Perl+SQL
    #32045422
Tey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Tey
Гость
Привет всем. У меня проблема! Как прочитать данные из MS SQL при помощи Perl. Пока я смог только подключиться к базе данных:

#!/usr/bin/perl
$dsn = 'TMeter';
$login = 'statread';
$pwd = 'statread';
use Win32::ODBC;
$connectstring = "DSN=$dsn;UID=$login;PWD=$pwd;

А дальше как ?!! Как теперь данные считать???
...
Рейтинг: 0 / 0
Perl+SQL
    #32045425
Denisco
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А как с обычными для перла базами, через fetch, не получается? И вообще в этом примере я не вижу где ты подключился.. Я конретно с MSSQL из перла не работал,
но с акесом приходилось..
my $dao = Win32::OLE->new('DAO.DBEngine.35', 'Quit');
$dao->{SystemDB}= 'system.mdw';
$dao->{DefaultUser}= 'Admin';
my $db=$dao->OpenDatabase('xxxx.mdb');
my $rec=$db->OpenRecordset('xxxxxxx');
Вот цикл для просмотра записей..
while(!$rec->EOF){
$rec->MoveNext;
}
...
Рейтинг: 0 / 0
Perl+SQL
    #32045584
Фотография Chicago
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я пользовался ADO. Платформа Win32, ActiveState Perl. Формально в комплект поставки входит DBD-драйвер для ADO, позволяющий работать с базой данных стандартным для Perl способом через интерфейс DBI. Но у меня с ним не сложилось: с его помощью удалось успешно подключиться к БД, а при выборке данных он начал жрать память и в конце концов глюкнулся. Так что я остановился на ADO:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
use strict;

#Настраиваемые параметры

# Имя профиля Exchange, который используется для рассылки
my $mapi_profile= "User" ;

# Строка подключения к базе данных, содержащей информацию о лицах,
# которым будут направлены сообщения
my $connection_string='Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=my_database;Data Source=my_sqlserver';

# КОНЕЦ ОБЛАСТИ НАСТРАИВАЕМЫХ ПАРАМЕТРОВ

#Packages
use File::Copy;
use Win32::OLE;
Win32::OLE->Option(Warn =>  1 );


################################################################
#PerlEz.dll Entry
sub Main()
{
Win32::OLE->Initialize(Win32::OLE::COINIT_APARTMENTTHREADED);

#Initalize ADO
my $cn=Win32::OLE->new('ADODB.Connection');
die  "Cannot to create ADO.Connection\n"  unless defined($cn);

$cn->{ConnectionString}=$connection_string;
$cn->{ConnectionTimeout}= 0 ;
$cn->open;
$cn->{CursorLocation}= 3 ; #UseClient

#Open a MAPI session
my $session=Win32::OLE->new('MAPI.Session');
die  "Cannot initialize a MAPI session!\n"  unless (defined($session));

$session->Logon($mapi_profile,undef, 0 );

my $msg=$session->Outbox->Messages->Add( "New Outgoing Mail!" );

# Check addresses
my @addresses=GetAddresses($cn);
for my $c (@addresses)
{
  my $rcp=$msg->Recipients->Add($c);
  $rcp->{Type}= 3 ;
  my $ret=$rcp->Resolve( 1 );

# А здесь формируем сообщение, действительный код опущен ;-)
  
  undef $rcp;
}

#Close a MAPI session
$session->Logoff();
undef $session;


$cn->Close();
undef $cn;

Win32::OLE->Uninitialize();
}

########################################################
#Local subs

#Определение адресатов
sub GetAddresses()
{
  my ($cn)=@_;
  
  my $cmd=Win32::OLE->new('ADODB.Command');
  die  "Cannot create ADO Command!\n"  unless defined($cmd);
  
  $cmd->{ActiveConnection}=$cn;
  $cmd->{CommandTimeout}= 0 ;
  $cmd->{CommandText}='select mail_address from employees where not mail_address is null  group by mail_address';
  $cmd->{CommandType}= 1 ; #Command Text

  my $rs=Win32::OLE->new('ADODB.Recordset');
  die  "Cannot create ADO recordset!\n"  unless defined($rs);

  $rs->open($cmd, undef,  3 ,  1 );
  die  "Cannot open ADO recordset\n"  if Win32::OLE::LastError();
  
  my @list=();

  while(!$rs->{EOF})
  {
    push(@list, $rs->Fields->Item('mail_address')->{Value});
	$rs->MoveNext();
  }
  $rs->Close();
  undef $rs;
  undef $cmd;
  
  @list;
}

################################################################
#Main Code: Console Entry

Main();
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Perl+SQL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]