node-sqlite3 直译中文API文档

new sqlite3.Database(filename [, mode] [, callback])

描述:

返回新的数据库对象并自动打开数据库。没有单独的方法来打开数据库。

参数:
  • filename
    有效值为文件名,":memory:"表示匿名内存数据库,空字符串表示匿名磁盘数据库。匿名数据库不会持久化,当关闭数据库句柄时,其内容将丢失。

  • mode(可选):
    可选一个或多个,值可为:sqlite3.OPEN_READWRITE, sqlite3.OPEN_CREATE, sqlite3.OPEN_FULLMUTEX, sqlite3.OPEN_URI, sqlite3.OPEN_SHAREDCACHE, sqlite3.OPEN_PRIVATECACHE.
    默认值为OPEN_READWRITE | OPEN_CREATE | OPEN_FULLMUTEX

  • callback (可选):
    如果提供了该函数,则将在成功打开数据库或发生错误时调用该函数。第一个参数是一个错误对象。当它为空时,表示打开成功。如果没有提供回调,并且发生了错误,则会在数据库对象上发出错误事件,其中error对象是唯一的参数。如果打开成功,则触发一个不带参数的打开事件,而不管是否提供了回调。


sqlite3.verbose()

描述:

将执行模式设置为verbose以产生较长的堆栈跟踪。这是无法重置的。有关详细信息,请参阅有关调试的wiki页面。



Database


close([callback])

描述:

关闭数据库

参数:
  • callback(可选):
    如果提供,该函数将在数据库成功关闭或发生错误时调用。第一个参数是一个错误对象。当它为null时,关闭成功。如果没有提供回调,并且发生了错误,则会在数据库对象上发出错误事件,其中error对象是唯一的参数。如果关闭成功,则触发一个不带参数的close事件,而不管是否提供了回调。

configure(option, value)

描述:

为数据库设置一个配置选项。有效的选项是:

  • Tracing & profiling
    trace:提供一个回调函数作为值。在SQL语句执行时调用,并呈现语句文本。
    profile:配置文件:提供一个函数回调。每次执行SQL语句时调用。

  • busyTimeout: 提供一个整数作为值。设置忙时超时。


run(sql [, param, …] [, callback])

描述:

使用指定的参数运行SQL查询,然后调用回调。它不检索任何结果数据。函数返回调用它的Database对象以允许函数链接

参数:
  • sql:
    要运行的SQL查询。如果SQL查询无效,并且将回调传递给函数,则使用包含来自SQLite的错误消息的错误对象调用该函数。如果没有传递回调而准备失败,则会在底层Statement对象上触发一个错误事件。
  • param, …(可选):
    当SQL语句包含占位符时,您可以将它们传递到这里。它们将在语句执行之前绑定到该语句。有三种方式传递绑定形参:直接在函数的实参中传递,作为数组传递,以及作为命名形参的对象传递。这将自动清除输入RE: issue #57。参数不能用于列名或表名。

如果你想保持回调作为第3个参数,你应该设置param为“[]”(空数组)根据问题#116

// 直接在函数参数中
db.run("UPDATE tbl SET name = ? WHERE id = ?", "bar", 2);

// 为一个数组
db.run("UPDATE tbl SET name = ? WHERE id = ?", [ "bar", 2 ]);

// 为具有命名参数的对象
db.run("UPDATE tbl SET name = $name WHERE id = $id", {
  $id: 2,
  $name: "bar"
});

命名参数可以用: name@name$name作为前缀。我们建议使用$name,因为JavaScript允许使用美元符号作为变量名而不必转义。还可以在?占位符。这些对应于数组中的位置。注意,占位符索引在SQLite中从1开始。node-sqlite3将数组映射为以1开头的数组,这样您就不必指定一个空值作为第一个数组元素(索引为0)。注意,在本例中,第一个索引是1:

db.run('UPDATE tbl SET name = ?5 WHERE id = ?', {
  1: 2,
  5: 'bar'
})

这将第一个占位符( $id )绑定到 2,索引为 5 的占位符绑定到"bar"。虽然这在SQLite和node-sqlite3中是有效的,但不建议混合使用不同的占位符类型。
如果使用数组或对象绑定形参,则它必须是绑定实参列表中的第一个值。如果在它之前有其他对象,则会抛出错误。数组或对象后面的附加绑定参数将被忽略。

  • callback(可选):
    如果给定了callback,则在语句准备或执行的任何步骤中发生错误时,或在查询运行后调用它。如果发生错误,第一个(也是唯一的)参数将是一个包含错误消息的错误对象。如果执行成功,第一个参数为null。函数的上下文(函数中的this对象)是语句对象。注意,不可能再次运行该语句,因为它在第一次运行后会自动完成。任何后续再次运行该语句的尝试都将失败。

如果执行成功,this 对象将包含两个属性lastIDchanges,分别包含最后插入的行ID的值和受此查询影响的行数。注意:

  • 你必须使用旧版的**function () { … }**样式的回调函数,而不是lambda函数,否则 this.lastIDthis.changes 将undefined

  • lastID仅在查询是一个成功完成的 INSERT 语句时包含有效信息,changes仅在查询是一个成功完成的UPDATEDELETE语句时包含有效信息。在所有其他情况下,这些属性的内容是不准确的,不应该使用。.run()函数是唯一设置这两个值的查询方法;所有其他查询方法,如.all().get(),都不会检索这些值。


get(sql [, param, …] [, callback])

描述:

使用指定的参数运行SQL查询,然后使用所有结果行调用回调。函数返回Database对象以允许函数链接。参数与 Database#run函数相同,不同之处在于:

回调函数的签名是function(err, row){}。如果结果集为空,则第二个参数undefined,否则它是一个包含第一行值的对象。属性名与结果集的列名对应。不可能通过列索引访问它们;唯一支持的方式是通过列名。


all(sql [, param, …] [, callback])

描述:

使用指定的参数运行SQL查询,然后使用所有结果行调用回调。函数返回Database对象以允许函数链接。参数与Database#run函数相同,不同之处在于:

回调函数的签名是function(err, rows){}rows 是一个数组。如果结果集为空,则它将是一个空数组,否则它将为每个结果行提供一个对象,该对象依次包含该行的值,如Database#get函数。

注意,它首先检索所有结果行并将它们存储在内存中。对于可能具有较大结果集的查询,使用Database#each函数检索所有行,或使用Database#prepare后跟多个Statement#get调用检索先前未知数量的行。


each(sql [, param, …] [, callback] [, complete])

描述:

使用指定的参数运行SQL查询,并对每个结果行调用一次回调。函数返回Database对象以允许函数链接。参数与Database#run函数相同,不同之处在于:

回调函数的签名是function(err, row){}。如果结果集成功但为空,则永远不会调用回调函数。在所有其他情况下,对检索到的每一行调用一次回调。调用的顺序与结果集中的行顺序完全一致。

在调用所有行回调之后,如果存在,则将调用完成回调。第一个参数是一个错误对象,第二个参数是检索的行数。如果你只指定一个函数,它将被视为行回调,如果你指定了两个,第一个(==倒数第二个)函数将是行回调,最后一个函数将是完成回调。

如果您知道查询只返回非常有限的行数,那么使用Database#all一次性检索所有行可能会更方便。

目前没有办法中止执行。


exec(sql [, callback])

描述:

运行提供的字符串中的所有SQL查询。未检索任何结果行。该函数返回Database对象以允许函数链接。如果查询失败,则不会执行任何后续语句(如果希望执行所有语句或不执行任何语句,请将其包装在事务中)。当所有语句都已成功执行时,或发生错误时,将调用回调函数,第一个参数为null或错误对象。当未提供回调且发生错误时,将在数据库对象上发出error 事件。

注意:这个函数只执行第一个NULL字节以内的语句。


prepare(sql [, param, …] [, callback])

描述:

准备SQL语句,并可选地绑定指定的参数,并在完成时调用回调。该函数返回一个Statement对象。

当准备成功时,回调函数的第一个也是唯一的参数为null,否则为error对象。当提供了绑定参数时,在调用回调之前将它们绑定到准备好的语句。


map(sql [, callback])

描述:

**Statement#map.**的快捷方式


loadExtension(path [, callback])

描述:

将编译后的SQLite扩展加载到数据库连接对象中。

参数:
  • path:
    要加载的扩展名的文件名。
  • callback(可选):
    如果提供了该函数,则在成功加载扩展或发生错误时将调用该函数。第一个参数是一个错误对象。当它为空时,加载成功。如果没有提供回调,并且发生了错误,则会在数据库对象上发出错误事件,其中error对象是唯一的参数。

注意:请确保您加载的扩展被编译或链接到与node-sqlite3被编译的版本相同的版本。版本不匹配会导致不可预测的行为。

建立一个扩展
half: SQLite文档给出了一个用户定义函数"half"的示例,该函数接受一个数字并返回一个结果(数字除以2):http://www.sqlite.org/cvstrac/wiki?p=LoadableExtensions

rank:一个来自全文搜索文档的现成示例https://github.com/coolaj86/sqlite3-fts4-rank
另请参阅:http://www.mail-archive.com/sqlite-users@sqlite.org/msg71740.html


interrupt()

描述:

允许用户中断长时间运行的查询。包装sqlite3_interrupt并导致其他数据获取函数传递一个带有code = sqlite3.INTERRUPT的错误。必须打开数据库才能使用此功能。



Statement


bind([param, …] [, callback])

描述:

将参数绑定到准备好的语句,并在完成或发生错误时调用回调。函数返回Statement对象以允许函数链接。当绑定成功时,回调函数的第一个也是唯一一个参数为null,否则为error对象。

与此函数绑定参数将完全重置语句对象和行游标,并删除所有以前绑定的参数(如果有的话)。


reset([callback])

描述:

重置语句的行游标并保留参数绑定。使用此函数可以使用相同的绑定重新执行相同的查询。函数返回Statement对象以允许函数链接。该回调函数将在重置完成后调用。这个操作永远不会失败,并且总是返回null作为第一个也是唯一的回调参数。


finalize([callback])

描述:

使结束声明。
这通常是可选的,但如果在执行下一个查询之前遇到长时间的延迟,则可能需要显式地结束语句。在运行独占查询时可能会出现这种情况(请参阅控制流一节)。语句结束后,对该语句对象的所有进一步函数调用都将抛出错误。


run([param, …] [, callback])

描述:

绑定参数并执行语句。函数返回Statement对象以允许函数链接。

如果指定了绑定参数,它们将在执行语句之前绑定到语句。注意,即使指定单个绑定参数,也会重置绑定和行游标。

回调行为与Database#run方法相同,不同之处在于语句在运行后不会结束。这意味着您可以多次运行它。


get([param, …] [, callback])

描述:

绑定参数,执行语句并检索第一个结果行。函数返回Statement对象以允许函数链接。参数与Statement#run函数相同,不同之处在于:

回调函数的签名是function(err, row){}。如果结果集为空,则第二个参数未定义,否则它是一个包含第一行值的对象。与Statement#run类似,语句在执行此函数后不会最终完成。

使用此方法会使数据库处于锁定状态,因为数据库将等待对Statement#get的进一步调用以检索后续行。要通知数据库您已完成检索行,您应该完成(使用Statement#finalize)或重置(使用Statement#reset)语句


all([param, …] [, callback])

描述:

绑定参数,执行语句并使用所有结果行调用回调。函数返回Statement对象以允许函数链接。参数与Statement#run函数相同,不同之处在于:

回调函数的签名是function(err, rows){}。如果结果集为空,则第二个参数为空数组,否则它为每个结果行包含一个对象,该对象又包含该行的值。与Statement#run类似,语句在执行此函数后不会最终完成。


each([param, …] [, callback] [, complete])

描述:

绑定参数,执行语句并为每个结果行调用回调。函数返回Statement对象以允许函数链接。参数与Statement#run函数相同,不同之处在于:

回调函数的签名是function(err, row){}。如果结果集成功但为空,则永远不会调用回调函数。在所有其他情况下,对检索到的每一行调用一次回调。调用的顺序与结果集中的行顺序完全一致。

在调用所有行回调之后,如果存在,则将调用完成回调。第一个参数是一个错误对象,第二个参数是检索的行数。如果你只指定一个函数,它将被视为行回调,如果你指定了两个,第一个(==倒数第二个)函数将是行回调,最后一个函数将是完成回调。

Statement#run类似,语句在执行此函数后不会最终完成。

如果您知道查询只返回非常有限的行数,那么使用Statement#all一次性检索所有行可能会更方便。

目前没有办法中止执行!


map(sql [, callback])

描述:

将结果作为对象而不是数组返回。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值