7. DBIをつかう
use DBI;
my $dbh = DBI->connect('dbi:SQLite:dbname=:memory:');
# .....
$dbh->disconnect;
13年3月23日土曜日
8. DBIをつかう
use DBI;
# SQLite(memory)
my $dbh = DBI->connect('dbi:SQLite:dbname=:memory:');
# SQLite(file)
my $dbh = DBI->connect('dbi:SQLite:dbname=local.sqlite');
# MySQL
my $dbh = DBI->connect(
'dbi:mysql:database=hoge;host=localhost',
'username',
'password',
);
13年3月23日土曜日
9. べんりメソッド
selectrow_*系
selectall_*系
selectcol_*系
do
prepare(_cached)?/execute
13年3月23日土曜日
10. よくつかうやつ
selectrow_array / selectrow_hashref
selectall_arrayref
selectcol_arrayref
do
13年3月23日土曜日
11. selectrow_array
# こんなかんじでかえってくる
# (1)
my ($id) = $dbh->selectrow_array(
'SELECT id FROM chibapm WHERE name = ?', undef, 'kaztr'
);
13年3月23日土曜日
12. selectrow_hashref
# こんなかんじでかえってくる
# { id => 1, name => 'kaztr' };
my $row = $dbh->selectrow_hashref(
'SELECT id, name FROM chibapm WHERE name = ?', undef, 'kaztr',
);
13年3月23日土曜日
13. selectall_arrayref
# こんなかんじでかえってくる
# [
# { id => 1, name => 'kaztr' },
# { id => 2, name => 'yoku0825' },
# { id => 3, name => 'hide_o_55' },
# ];
my $chibapm_list = $dbh->selectall_arrayref(
'SELECT id, name FROM chibapm WHERE name IN (?, ?, ?)',
+{ Slice => +{} },
'kaztr', 'yoku0825', 'hide_o_55'
);
13年3月23日土曜日
14. selectcol_arrayref(1)
# こんなかんじでかえってくる
# [ 1, 2, 3 ];
my $chibapm_id_list = $dbh->selectcol_arrayref(
'SELECT id FROM chibapm WHERE name IN (?, ?, ?)',
undef,
'kaztr', 'yoku0825', 'hide_o_55'
);
13年3月23日土曜日
15. selectcol_arrayref(2)
# こんなかんじでかえってくる
# [ 'kaztr', 1, 'yoku0825', 2, 'hide_o_55', 3 ];
my $chibapm_name2id_map = $dbh->selectcol_arrayref(
'SELECT name, id FROM chibapm WHERE name IN (?, ?, ?)',
+{ Columns => [1, 2] },
'kaztr', 'yoku0825', 'hide_o_55'
);
13年3月23日土曜日
16. selectcol_arrayref(3)
# こんなかんじでかえってくる
# (
# 'kaztr' => 1,
# 'yoku0825' => 2,
# 'hide_o_55' => 3,
# );
my %chibapm_name2id_map = @{ $dbh->selectcol_arrayref(
'SELECT name, id FROM chibapm WHERE name IN (?, ?, ?)',
+{ Columns => [1, 2] },
'kaztr', 'yoku0825', 'hide_o_55'
) };
say $chibapm_name2id_map{kaztr}; # 1
13年3月23日土曜日
17. do
# クエリ実行するだけー
# 変更された行数か、特になければ'0E0'を返す
$dbh->do(
'INSERT INTO chibapm (name) VALUES (?)',
undef,
'kenjiskywalker',
);
13年3月23日土曜日
26. select_one
# こんなかんじでかえってくる
# 1
my $id = $dbh->select_one(
'SELECT id FROM chibapm WHERE name = ?', 'kaztr'
);
# DBI#selectrow_array でもだいたいおなじことできる!
13年3月23日土曜日
27. select_row
# こんなかんじでかえってくる
# { id => 1, name => 'kaztr' };
my $row = $dbh->select_row(
'SELECT id, name FROM chibapm WHERE name = ?', 'kaztr',
);
# DBI#selectrow_hashref とおんなじ!
13年3月23日土曜日
28. select_all
# こんなかんじでかえってくる
# [
# { id => 1, name => 'kaztr' },
# { id => 2, name => 'yoku0825' },
# { id => 3, name => 'hide_o_55' },
# ];
my $chibapm_list = $dbh->select_all(
'SELECT id, name FROM chibapm WHERE name IN (?)',
['kaztr', 'yoku0825', 'hide_o_55']
);
# DBI#selectall_arrayref でもだいたいおんなじことできる
13年3月23日土曜日