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

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

А дальше как ?!! Как теперь данные считать???
...
Рейтинг: 0 / 0
23.08.2002, 10:35:19
    #32045425
Denisco
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Perl+SQL
А как с обычными для перла базами, через 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
23.08.2002, 15:18:09
    #32045584
Chicago
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Perl+SQL
Я пользовался 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
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Perl+SQL / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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