English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
SQLite3 Perl DBI 모듈을 사용하여 Perl과 통합할 수 있습니다. Perl DBI 모듈은 Perl 프로그래밍 언어의 데이터베이스 접근 모듈입니다. 그것은 표준 데이터베이스 인터페이스 메서드, 변수 및 규칙을 정의합니다.
아래는 Linux에서 보여집니다:/UNIX 마シ너에서 DBI 모듈을 설치하는 간단한 단계:
$ wget http://search.cpan.org/CPAN/authors/id/T/TI/TIMB/DBI-1.625.tar.gz $ tar xvfz DBI-1.625.tar.gz $ cd DBI-1.625 $ perl Makefile.PL $ make $ make install
DBI에 SQLite 드라이버를 설치하려면 다음 단계를 따라 설치하세요:
$ wget http://search.cpan.org/CPAN/authors/id/M/MS/MSERGEANT/DBD-SQLite-1.11.tar.gz $ tar xvfz DBD-SQLite-1.11.tar.gz $ cd DBD-SQLite-1.11 $ perl Makefile.PL $ make $ make install
이 중요한 DBI 프로그램은 Perl 프로그램에서 SQLite 데이터베이스를 사용하는 요구를 충족시킬 수 있습니다. 자세한 내용을 알고 싶다면 Perl DBI 공식 문서를 참조하세요.
순번 | API & 설명 |
---|---|
1 | DBI->connect($data_source, "", "", \%attr) 데이터 소스 $data_source에 대한 데이터베이스 연결이나 세션을 만듭니다. 연결이 성공하면 데이터베이스 처리 객체를 반환합니다. 데이터 소스 형식은 다음과 같습니다:DBI:SQLite:dbname='test.db'. SQLite는 SQLite 드라이버 이름이며, test.db는 SQLite 데이터베이스 파일 이름입니다. 파일 이름 filename 할당됩니다 ':memory:'그렇다면, RAM에서 메모리 데이터베이스를 생성하게 됩니다. 이는 세션의 유효 기간 동안만 유지됩니다. 만약 파일 이름 filename이 실제 장치 파일 이름이라면, 이 参数 값을 사용하여 데이터베이스 파일을 열려고 시도합니다. 파일이 존재하지 않으면, 이 이름의 새로운 데이터베이스 파일을 생성합니다. 두 번째와 세 번째 매개변수를 빈 문자열로 유지할 수 있으며, 마지막 매개변수는 다양한 속성을 전달하는 데 사용됩니다. 아래의 예제를 참조하세요. |
2 | $dbh->do($sql) 이 절차는 간단한 SQL 문장을 준비하고 실행합니다. 오류가 발생하면 undef를 반환합니다. 반환 값 -1 이는 행 수가 알려지지 않거나 적용되지 않거나 사용할 수 없음을 의미합니다. 여기서, $dbh는 DBI->connect() 호출이 반환하는 처리를 호출합니다. |
3 | $dbh->prepare($sql) 이 절차는 데이터베이스 엔진의 후속 실행을 위해 문장을 준비하고, 문장 처리 객체를 반환합니다. |
4 | $sth->execute() 이 절차는 예비로 준비된 문장을 실행하기 위해 필요한 처리를 수행합니다. 오류가 발생하면 undef를 반환합니다. 성공적으로 실행되면 영향을 받은 행 수에 관계없이 항상 true를 반환합니다. 여기서, $sth는 $dbh->prepare($sql) 호출이 반환하는 문장 처리를 호출합니다. |
5 | $sth->fetchrow_array() 이 절차는 다음 행 데이터를 가져오고, 각 필드 값이 포함된 목록 형식으로 반환합니다. 목록에서 Null 필드는 undef 값으로 반환됩니다. |
6 | $DBI::err 이는 $h와 동일합니다->err. 그 중, $h는 어떤 처리 유형이든, 예를 들어 $dbh, $sth 또는 $drh. 이 프로그램은 마지막으로 호출된 드라이버 메서드의 데이터베이스 엔진 오류 코드를 반환합니다. |
7 | $DBI::errstr 이는 $h와 동일합니다->errstr. 그 중, $h는 어떤 처리 유형이든, 예를 들어 $dbh, $sth 또는 $drh. 이 프로그램은 마지막으로 호출된 DBI 메서드의 데이터베이스 엔진 오류 메시지를 반환합니다. |
8 | $dbh->disconnect() 이 프로시저는 DBI 호출 전에 호출됩니다->connect()로 열린 데이터베이스 연결 |
아래 Perl 코드는 기존 데이터베이스에 연결하는 방법을 보여줍니다. 데이터베이스가 존재하지 않으면 생성되고, 마지막으로 데이터베이스 객체가 반환됩니다
#!/usr/bin/perl use DBI; use strict; my $driver = "SQLite"; my $database = "test.db"; my $dsn = "DBI:$driver:dbname=$database"; my $userid = ""; my $password = ""; my $dbh = DBI->connect($dsn, $userid, $password, { RaiseError => 1 }) or die $DBI::errstr; print "Opened database successfully\n";
이제, 위 프로그램을 실행하여 현재 디렉토리에 데이터베이스를 생성하겠습니다 test.db위 코드를 sqlite.pl 파일에 저장하고, 다음과 같이 실행하세요. 데이터베이스가 성공적으로 생성되면, 다음과 같은 메시지가 표시됩니다:
$ chmod +x sqlite.pl $ ./sqlite.pl 데이터베이스 열기 성공
아래 Perl 코드 절은 이전에 생성된 데이터베이스에서 테이블을 생성하는 데 사용됩니다:
#!/usr/bin/perl use DBI; use strict; my $driver = "SQLite"; my $database = "test.db"; my $dsn = "DBI:$driver:dbname=$database"; my $userid = ""; my $password = ""; my $dbh = DBI->connect($dsn, $userid, $password, { RaiseError => 1 }) or die $DBI::errstr; print "Opened database successfully\n"; my $stmt = qq(CREATE TABLE COMPANY (ID INT PRIMARY KEY NOT NULL, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR(50), SALARY REAL);); my $rv = $dbh->do($stmt); if($rv < 0){ print $DBI::errstr; } print "Table created successfully\n"; } $dbh->disconnect();
위 프로그램이 실행될 때, 다음 위치에 생성됩니다 test.db COMPANY 테이블을 생성하고, 다음과 같은 메시지를 표시합니다:
데이터베이스 열림 성공 테이블이 성공적으로 생성되었습니다
주의:아래와 같은 오류를 어떤 작업 중에도 만났다면: 아래와 같은 오류를 어떤 작업 중에도 보고 받았다면:
DBD::SQLite::st execute 실패: 오류가 아닙니다(21)에서 dbdimp.c 라인 398
이 경우, 이미 DBD에 있는-SQLite 설치 중에 dbdimp.c 파일을 열고, 찾습니다 sqlite3_prepare() 함수를 사용하고, 그 세 번째 파라미터 0을 -1마지막으로 만드는 대신. 및 install DBD::SQLite를 설치하면 문제를 해결할 수 있습니다 이 경우 DBD에 있는 dbdimp.c 파일을 열 수 있습니다-SQLite 설치 및 찾기 sqlite3_prepare() 기능과 그 제3번 인자를 -1 DBD::SQLite를 사용하여 최종 설치 만드는 대신. 하고 install 문제를 해결하기 위해.
아래의 Perl 프로그램은 위에서 생성한 COMPANY 테이블에 기록을 생성하는 방법을 보여줍니다:
#!/usr/bin/perl use DBI; use strict; my $driver = "SQLite"; my $database = "test.db"; my $dsn = "DBI:$driver:dbname=$database"; my $userid = ""; my $password = ""; my $dbh = DBI->connect($dsn, $userid, $password, { RaiseError => 1 }) or die $DBI::errstr; print "Opened database successfully\n"; my $stmt = qq(INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (1, 'Paul', 32, 'California', 20000.00 )); my $rv = $dbh->do($stmt) or die $DBI::errstr; my $stmt = qq(INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (2, 'Allen', 25, 'Texas', 15000.00 )); $rv = $dbh->do($stmt) or die $DBI::errstr; my $stmt = qq(INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (3, 'Teddy', 23, 'Norway', 20000.00 )); $rv = $dbh->do($stmt) or die $DBI::errstr; my $stmt = qq(INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 )); $rv = $dbh->do($stmt) or die $DBI::errstr; print "기록이 성공적으로 생성되었습니다\n"; $dbh->disconnect();
위 프로그램이 실행될 때, COMPANY 테이블에 주어진 기록이 생성되고 다음 두 행이 표시됩니다:
데이터베이스 열림 성공 기록이 성공적으로 생성되었습니다
아래의 Perl 프로그램은 앞에서 생성한 COMPANY 테이블에서 기록을 가져오고 표시하는 방법을 보여줍니다:
#!/usr/bin/perl use DBI; use strict; my $driver = "SQLite"; my $database = "test.db"; my $dsn = "DBI:$driver:dbname=$database"; my $userid = ""; my $password = ""; my $dbh = DBI->connect($dsn, $userid, $password, { RaiseError => 1 }) or die $DBI::errstr; print "Opened database successfully\n"; my $stmt = qq(SELECT id, name, address, salary from COMPANY;); my $sth = $dbh->prepare( $stmt ); my $rv = $sth->execute() or die $DBI::errstr; if($rv < 0){ print $DBI::errstr; } while(my @row = $sth->fetchrow_array()) { print "ID = ". $row[0] . "\n"; print "NAME = ". $row[1] ."\n"; print "ADDRESS = ". $row[2] ."\n"; print "SALARY = ". $row[3] ."\n\n"; } print "Operation done successfully\n"; $dbh->disconnect();
위 프로그램이 실행될 때, 다음과 같은 결과를 생성합니다:
데이터베이스 열림 성공 ID = 1 NAME = Paul ADDRESS = 캘리포니아 SALARY = 20000 ID = 2 NAME = Allen ADDRESS = Texas SALARY = 15000 ID = 3 NAME = Teddy ADDRESS = 노르웨이 SALARY = 20000 ID = 4 NAME = Mark ADDRESS = Rich-월요일 SALARY = 65000 작업이 성공적으로 완료되었습니다
아래의 Perl 코드는 UPDATE 문을 사용하여 어떤 기록을 업데이트하고 COMPANY 테이블에서 업데이트된 기록을 가져오고 표시하는 방법을 보여줍니다:
#!/usr/bin/perl use DBI; use strict; my $driver = "SQLite"; my $database = "test.db"; my $dsn = "DBI:$driver:dbname=$database"; my $userid = ""; my $password = ""; my $dbh = DBI->connect($dsn, $userid, $password, { RaiseError => 1 }) or die $DBI::errstr; print "Opened database successfully\n"; my $stmt = qq(UPDATE COMPANY set SALARY = 25000.00 where ID=1;); my $rv = $dbh->do($stmt) or die $DBI::errstr; if( $rv < 0 ){ print $DBI::errstr; }else{ print "총 갱신된 행 수 : $rv\n"; } $stmt = qq(SELECT id, name, address, salary from COMPANY;); my $sth = $dbh->prepare( $stmt ); $rv = $sth->execute() or die $DBI::errstr; if($rv < 0){ print $DBI::errstr; } while(my @row = $sth->fetchrow_array()) { print "ID = ". $row[0] . "\n"; print "NAME = ". $row[1] ."\n"; print "ADDRESS = ". $row[2] ."\n"; print "SALARY = ". $row[3] ."\n\n"; } print "Operation done successfully\n"; $dbh->disconnect();
위 프로그램이 실행될 때, 다음과 같은 결과를 생성합니다:
데이터베이스 열림 성공 총 갱신된 행 수: 1 ID = 1 NAME = Paul ADDRESS = 캘리포니아 SALARY = 25000 ID = 2 NAME = Allen ADDRESS = Texas SALARY = 15000 ID = 3 NAME = Teddy ADDRESS = 노르웨이 SALARY = 20000 ID = 4 NAME = Mark ADDRESS = Rich-월요일 SALARY = 65000 작업이 성공적으로 완료되었습니다
아래 Perl 코드는 DELETE 문을 사용하여 어떤 기록도 제거하고, COMPANY 테이블에서 나머지 기록을 가져오고 표시하는 방법을 보여줍니다:
#!/usr/bin/perl use DBI; use strict; my $driver = "SQLite"; my $database = "test.db"; my $dsn = "DBI:$driver:dbname=$database"; my $userid = ""; my $password = ""; my $dbh = DBI->connect($dsn, $userid, $password, { RaiseError => 1 }) or die $DBI::errstr; print "Opened database successfully\n"; my $stmt = qq(DELETE from COMPANY where ID=2;); my $rv = $dbh->do($stmt) or die $DBI::errstr; if( $rv < 0 ){ print $DBI::errstr; }else{ print "Total number of rows deleted : $rv\n"; } $stmt = qq(SELECT id, name, address, salary from COMPANY;); my $sth = $dbh->prepare( $stmt ); $rv = $sth->execute() or die $DBI::errstr; if($rv < 0){ print $DBI::errstr; } while(my @row = $sth->fetchrow_array()) { print "ID = ". $row[0] . "\n"; print "NAME = ". $row[1] ."\n"; print "ADDRESS = ". $row[2] ."\n"; print "SALARY = ". $row[3] ."\n\n"; } print "Operation done successfully\n"; $dbh->disconnect();
위 프로그램이 실행될 때, 다음과 같은 결과를 생성합니다:
데이터베이스 열림 성공 삭제된 행의 총 수: 1 ID = 1 NAME = Paul ADDRESS = 캘리포니아 SALARY = 25000 ID = 3 NAME = Teddy ADDRESS = 노르웨이 SALARY = 20000 ID = 4 NAME = Mark ADDRESS = Rich-월요일 SALARY = 65000 작업이 성공적으로 완료되었습니다