【发布时间】:2015-11-05 03:15:41
【问题描述】:
我正在尝试使用以下代码在 SqlLite 数据库中插入数据。我检查了什么:
- 数据库已创建(我可以在浏览器中看到);
- 表 codeData 也存在(我之前已经创建了它,列 code char(10)、desc char(50) 和 price char(10));
- CSV 文件读取正常;
- 我使用 Stringbuilder 函数来模拟 Java 函数(工作正常!);
- 我发出并“警告”检查 INSERT 命令的语法('INSERT INTO codeData (code, desc, price) values("123456","Cardboard 123", "US$ 9,99")') ;
- 代码运行时没有错误消息。
但是表格中没有输入数据!
有人可以帮助我吗?我认为错误很明显,但经过 24 小时的尝试,我再也看不到了……谢谢!
tableName ="codeData";
columns = "code, desc, price";
str1 = " 'INSERT INTO " + tableName + " (" + columns + ") VALUES (";
str2 = ")'";
function Codes_Import() {
var db = openDatabase("db_codes", "1.0", "Code Information" , 1500000);
file = ReadFile("PRICELIST.csv"); // open csv
var lines = file.responseText.split('\n');
for(var line = 0; line < lines.length; line++)
{
var line = (lines[line]);
var sb = new StringBuilder(str1);
var str = line.split(";");
sb.append('"' + str[0] + '","');
sb.append(str[1] + '", "');
sb.append(str[2] + '"');
sb.append(str2);
alert (sb); //<-- just to check if the INSERT statement is correct.
db.transaction(function(tx) {
tx.executeSql(sb);
});
}
}
【问题讨论】:
-
从我可以看到你开始交易但忘记提交?
tx.commit();? -
@jpaljasma
transaction函数自动提交。 -
为什么每个 INSERT 语句使用一个事务?
-
@CL 很高兴知道。尽管如此,代码应该正在执行。任何错误,例如
tx.executeSql(sb, function(result){console.log(result);}); -
@CL,我可以在整个循环中使用事务,谢谢!我认为这将提高性能。