1

我无法将数据插入到 sqlite 开发数据库中。

我的应用程序有 2 台服务器,一台用于抓取浏览器(browserscraper),另一台用于服务客户端请求。这些中的每一个都有一个生产和发展。

我正在设置开发以将最终抓取的数据插入到我的开发客户端请求服务器中,但是我无法让插入工作。我怀疑这与正确转义内容有关,但我已经在谷歌上几个小时试图弄清楚这一点。

这是从我的抓取应用程序到我的远程客户端应用程序的插入

@sql_insert = "INSERT INTO #{@table} (`case_number`, `style_of_case`, `circuit`, `judge`, `location`, `disposition`, `date_filed`, `disposition_date`, `case_type`, 'lead_details', 'charge_details')"

@sql_values = " VALUES (#{self.case_number.to_blob}, #{self.style_of_case.to_blob}, #{self.circuit.to_blob}, #{self.judge.to_blob}, #{self.location.to_blob}, #{self.disposition.to_blob}, #{self.date_filed.to_blob}, #{self.disposition_date.to_blob}, #{self.case_type.to_blob},  #{self.lead_details.to_blob}, #{self.charge_details.to_blob});"

@db = SQLite3::Database::new('E:/Sites/aws/db/development.sqlite3')
@db.execute(@sql_insert + @sql_values + "COMMIT;")

最终的查询看起来像这样(我知道很丑)。我插入的最后两个是 yaml

INSERT INTO lead_to_processes (`case_number`, `style_of_case`, `circuit`, `judge`, `location`, `disposition`, `date_filed`, `disposition_date`, `case_type`, 'lead_details', 'charge_details') VALUES (130025129, 130025129 - CITY, 1st(Jim, Counties), LOVEKAMP, KELLY LAREE, Schuyler, Plea Written, 03/19/2012, 03/19/201, Municipal Ordinance - Traffic,  ---
1-address_line_1: 6150 RICHLAND RD
1-address_line_2: ''
1-city: 'GEORGIA'
1-birth_year: '1955' 
1-is_alive: 1
, ---
1-Description: Not Available }
1-Code: '95220'
);
4

3 回答 3

3

您没有在 1999 年破解 PHP,因此您不应该使用字符串插值与您的数据库对话。SQLite3::Database#execute支持占位符,请使用;你execute应该看起来像这样:

@db.execute("insert into #{@table} (case_number, style_of_case, ...) values (?, ?, ...)", [
    self.case_number.to_blob,
    self.style_of_case.to_blob,
    ...
])

这样,数据库界面将为您处理所有引用和转义以及诸如此类的事情。

于 2013-03-26T04:16:07.857 回答
0

我不熟悉 Ruby 或 SQLite,但纯粹看您的查询,您的最后两个列名用单引号错误地引用了。'lead_details' 和 'charge_details' 不需要放在引号中,除非您像其他列名一样使用反引号。

除此之外,您插入的值也没有正确引用。大多数语言都提供了一个函数来适当地转义和引用数据库字符串。

我还建议检查插入的实际错误消息是什么,因为它应该有助于在这种情况下指出问题所在。

于 2013-03-26T04:07:02.327 回答
-1

INSERT INTO lead_to_processes (case_number, style_of_case, circuit, judge, location, disposition, date_filed, disposition_date, case_type, 'lead_details', 'charge_details') VALUES (130025129, 130025129 - CITY, 1st(Jim, Counties), LOVEKAMP, KELLY LAREE, Schuyler, Plea Written, 03/19/2012, 03/19/201, Municipal Ordinance - Traffic, --- 1-address_line_1: 6150 RICHLAND RD 1-address_line_2: '' 1-city: 'GEORGIA' 1-birth_year: '1955' 1-is_alive: 1 , --- 1-Description: Not Available } 1-Code: '95220' );

看起来,从 开始130025129 - CITY,您的输入值没有用引号括起来,因此查询解析器无法解析它。我会用单引号将每个字符串值括起来。

于 2013-03-26T04:07:41.663 回答