无法使用Ruby程序打开SQLite3数据库

时间:2015-12-23 02:23:47

标签: ruby sqlite

我正在开发一个简单的程序,我需要通过编写Ruby代码来打开我的Sqlite3数据库,但是在执行它时遇到以下错误: 'initialize':无法打开数据库文件(Sqlite£:CantOpenException)     来自first.rb:4:'new'     来自first.rb:4:in''

代码在这里:

require "sqlite3"

# Open a database
db = SQLite3::Database.open "C:\Users\aroraku\Desktop\SQL\adaptive.db"


# Find a few rows
db.execute( "
Select count(uuid) as RegistredPeopleNo, strftime('%Y-%m',created_at) AS Month
from users
group by strftime('%Y-%m',created_at)
order by Month;" ) do |row|
  p row
end

有人可以帮我解决这个问题。提前致谢

1 个答案:

答案 0 :(得分:1)

我猜你的问题是双引号字符串中的\用于开始转义序列。例如:

> puts "C:\Users\aroraku\Desktop\SQL\adaptive.db"
C:UsersrorakuDesktopSQLdaptive.db

我的终端也发出几声嘟嘟声,我无法复制'n'paste。

你需要加倍反斜杠:

"C:\\Users\\aroraku\\Desktop\\SQL\\adaptive.db"

或改为使用正斜杠:

"C:/Users/aroraku/Desktop/SQL/adaptive.db"

Windows历史上允许在路径名中使用正斜杠或反斜杠,我不确定这是否仍然是正确的,因此正斜杠版本可能无效。

单引号(由Andrew Marshall指出)也是一个选项:

'C:\Users\aroraku\Desktop\SQL\adaptive.db'

但是你仍然可以遇到某些奇怪文件名的问题,因为反斜杠在单引号字符串中的某些狭隘情况(例如'\\''\'')中仍然有意义。