Dancer :: Tutorial连接到SQLite

时间:2013-09-21 13:27:31

标签: perl sqlite dancer

我正在创建数据库

sqlite3 database 
    create table if not exists entries (
        id integer primary key autoincrement,
        title string not null,
        text string not null
    );
    ^D

我应该把这个数据库放在哪里? 之后

  sub connect_db {
    my $dbh = DBI->connect("dbi:SQLite:dbname=".setting('database')) or
       die $DBI::errstr;

    return $dbh;
  }

  sub init_db {
    my $db = connect_db();
    my $schema = read_file('./schema.sql');
    $db->do($schema) or die $db->errstr;
  }

get '/' => sub {
    my $db = connect_db();
    my $sql = 'select id, title, text from entries order by id desc';
    my $sth = $db->prepare($sql) or die $db->errstr;
    $sth->execute or die $sth->errstr;
    template 'show_entries.tt', { 
       'msg' => get_flash(),
       'add_entry_url' => uri_for('/add'),
       'entries' => $sth->fetchall_hashref('id'),
    };
  };

收到错误 运行时错误 靠近“desk”:/home/ultramozg/App/lib/App.pm第40行第16行语法错误

这是我的错误?

2 个答案:

答案 0 :(得分:2)

我强烈建议您使用Dancer :: Plugin :: Database而不是您提议的connect_db例程。你这样做的方式可能会创建剩余的开放连接,从而产生各种各样的问题。 Dancer :: Plugin :: Database为您处理持久连接。插件文件:

https://metacpan.org/pod/Dancer::Plugin::Database

安装Dancer :: Plugin :: Database并在config.yml中配置它后,无论何时需要数据库句柄,您只需:

my $dbh => database('my_database_name');

完成后不要断开连接。

如果你正在使用ubuntu,只需:

apt-get install libdancer-plugin-database-perl

祝你的项目好运!

答案 1 :(得分:0)

你有一个^ D字符作为首发 - 第一部分的最后一行。请学习阅读输出。它告诉你第16行。

检查代码中“desk”字样的位置。