我不得不搜索关于这些错误的很多帖子,但我仍然无法解决问题.这是我的代码,谁能帮助我看看出了什么问题?
- (void) copyDatabaseIfNeeded {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"SQL.sqlite"];
if (sqlite3_open([path UTF8String], &newDBconnection) == SQLITE_OK)
{
NSLog(@"Database opened successfully");
if(updateStmt == nil) {
NSString *updStmt = [NSString stringWithFormat: @"UPDATE Coffee SET CoffeeName = '500 Plus', Price = '1.40' Where CoffeeID= '3'"];
const char *mupdate_stmt = [updStmt UTF8String];
if(sqlite3_prepare_v2(newDBconnection, mupdate_stmt, -1, &updateStmt, NULL) != SQLITE_OK){
NSAssert1(0, @"Error while creating update statement. '%s'", sqlite3_errmsg(newDBconnection));
} else {
NSLog(@"Update successful");
} …Run Code Online (Sandbox Code Playgroud) 我遇到了SQLite的问题(版本3.7.13,如果有关系).
我创建了一个包含两列foo和bar的新表,数据类型未定义.当我尝试插入数字时,它工作正常.当我插入文本时,"错误:没有这样的列"发生.
sqlite> CREATE TABLE test (foo, bar);
sqlite> .tables
test
sqlite> insert into test values (0,1);
sqlite> select * from test;
0|1
sqlite> insert into test values (a,b);
Error: no such column: a
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
谢谢.
我正在尝试基于 SQLite 中的字符串进行查询,但我遇到的问题是当字符串包含双引号 (") 时。我还没有弄清楚如何转义它。
我正在使用SQLite 的数据库浏览器。该字符串是3" Nail。它是以编程方式插入的,但是当我尝试以编程方式或通过 SQLite 浏览器查询它时,它返回零行,记录我的查询,但字符串文字为'3" Nail'(后面有一个分号'quot' 部分,但我不能把它放在这里,或者它会将其翻译为 ")。我怀疑这是我的问题;它插入的字符与我尝试查询的字符不同,但我不知道如何确定这一点。
作为记录,我尝试使用单引号(')和反斜杠(\)进行转义,因此我尝试了以下查询:
1. SELECT * FROM TABLE WHERE NAME = '3" Nail';
2. SELECT * FROM TABLE WHERE NAME = '3\" Nail';
3. SELECT * FROM TABLE WHERE NAME = '3'" Nail';
4. SELECT * FROM TABLE WHERE NAME = '3'''' Nail';
5. SELECT * FROM TABLE WHERE NAME = '3\'\' Nail';
Run Code Online (Sandbox Code Playgroud)
非常感激任何的帮助!
- - -更新 - - -
全部。我道歉。取消狩猎。我已经弄清楚了这个问题。
为了简化问题,我展示了一个简单的查询,但我实际尝试的查询更复杂。它涉及到一个 JOIN,并且失败了,因为插入数据的功能关闭了。它首先插入到一个表中,然后查询该表以获取刚刚插入的项目的 …
我正在使用手机间隙制作苹果应用程序(使用sqlite数据库).
除了我尝试插入网络链接时,我的所有插件都能正常工作.这个错误是因为网络链接中有"字符".
使用以下内容:
var content = 'hello, this is my <a href="www.google.com">link</a>'
tx.executeSql('UPDATE PAGES SET content="'+content+'" WHERE id="1"');
Run Code Online (Sandbox Code Playgroud)
返回以下错误
error code 1
error: "near "http": syntax error"
Run Code Online (Sandbox Code Playgroud)
如果我删除网站地址,我不会收到错误.我试过了:content = escape(content);
但这没效果.
我正试图在这个字段TITLE varchar(200) NOT NULL的表格中插入下一句话:
INSERT OR IGNORE INTO EXAMPLETABLE VALUES ("1-Preludi \"Obrint Pas 2011\"", ...
Run Code Online (Sandbox Code Playgroud)
问题是SQLite错误地理解了"逃避问题,我不知道如何在我的Android程序中解决问题(也许是字符代码?)".
我正在制作Android应用程序而且我使用了SQLite数据库.但我发现如果你输入单引号(')等字符(也用作主键),数据将无法正确保存/检索.
这是我的问题还是真的?如果真的有更多这样的人物?
谢谢.
@bdares和@mu感谢您的提示,但是请您告诉我如何在SQLite中使用占位符和/或预处理语句?
我之前总是使用直接字符串连接,但现在看来这是一个不好的做法,我想使用预处理语句和/或占位符.
我不知道如何在我的 Sqlite3 代码中实现准备好的语句
#include <iostream>
#include <sqlite3.h>
#include <stdio.h>
static int callback (void* NotUsed, int argc, char** argv, char** azColName) {
int i;
for (i = 0; i < argc; i++) {
std::cout << ("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");
}
std::cout << ("\n");
return 0;
}
int main (int argc, char* argv[]) {
sqlite3* db;
char* zErrMsg = 0;
int rc;
char* sql;
/* Open database */
rc = sqlite3_open ("test.db", &db);
if (rc) {
std::cerr …Run Code Online (Sandbox Code Playgroud) 我正在尝试将以下文本添加到我的数据库: Zeeland '96
但单引号给了我错误.
它应该如下所示:
INSERT INTO Department (Code, Name, CountryID) VALUES ('ZE', 'Zeeland '96', 1)
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,此刻缺少一个引用,我怎么能摆脱这个问题呢?
提前致谢!
我编写了一个程序,用一个单词列表填充数据库.问题是,每当我尝试运行代码时,它会抛出"线程中的异常"主"java.sql.SQLException:near"s":语法错误".我意识到在这个论坛上已经提出了类似的问题,但是在我的代码中我无法纠正错误.
因此,我求助于你.
这是代码
import java.io.*;
import java.sql.*;
import java.util.Scanner;
public class db_populate {
public static void main(String[] args) throws SQLException, IOException,
ClassNotFoundException {
Connection c = null;
Statement stmt = null;
Scanner in = null;
String word;
String wordcat;
String j, sql;
int i = 0;
Class.forName("org.sqlite.JDBC");
c = DriverManager.getConnection("jdbc:sqlite:dictionary.db");
c.setAutoCommit(false);
System.out.println("Opened database successfully");
stmt = c.createStatement();
in = new Scanner(new File("wordsEn.txt"));
while (in.hasNext()) {
word = in.nextLine();
i++;
j = Integer.toString(i);
wordcat = word.substring(0, 2);
sql = "INSERT INTO …Run Code Online (Sandbox Code Playgroud) 我正在尝试将Stringsql插入我的数据库.该字符串可能包含" ' ".
当我现在尝试将其插入我的数据库时,我收到此错误:
[SQLITE_ERROR] SQL错误或丢失的数据库(近"字符后" ":语法错误)
功能调用:
Main.execute("INSERT INTO Projektname(projektname) VALUES('" + txtFd_name.getText() + "');");
Run Code Online (Sandbox Code Playgroud)
Main.execute:
public static void execute(String query){
class.forName("org.sqlite.JDBC");
Connection conn = DriverManager.getConnection("jdbc:sqlite:D:\\user\\eclipse-workspace\\S2LDB.db");
Statement stat = conn.createStatement();
stat.execute(query);
}
Run Code Online (Sandbox Code Playgroud)
我尝试过 org.apache.commons.text.StringEscapeUtils.escapeJava()