首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Dancer::Tutorial连接到SQLite

Dancer::Tutorial连接到SQLite
EN

Stack Overflow用户
提问于 2013-09-21 21:27:31
回答 2查看 881关注 0票数 0

我正在创建数据库

代码语言:javascript
复制
sqlite3 database 
    create table if not exists entries (
        id integer primary key autoincrement,
        title string not null,
        text string not null
    );
    ^D

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

代码语言:javascript
复制
  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.App第40行,第16行

这是我的错吗?

EN

回答 2

Stack Overflow用户

发布于 2013-09-24 04:34:55

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

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

一旦您安装了Dancer::Plugin::Database并在config.yml中对其进行了配置,那么无论何时需要数据库句柄,您只需:

代码语言:javascript
复制
my $dbh => database('my_database_name');

完成后不要费心断开连接。

如果您使用的是ubuntu,只需:

代码语言:javascript
复制
apt-get install libdancer-plugin-database-perl

祝你的项目好运!

票数 2
EN

Stack Overflow用户

发布于 2013-09-21 21:30:44

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

检查"desk“一词在代码中出现的位置。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18933156

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档