电话间隙.正在向数据库表中插入Null值.数据类型冲突
Phonegap. Null value being inserted into database table. Datatype conflict?
我对以下代码有问题。
我有一个表单,用户可以从现有位置和游戏的下拉列表中进行选择,如果不存在,他们可以选择"添加新游戏/位置",并在文本字段中输入游戏名称和/或位置。当他们这样做时,我想把新游戏和/或位置写入数据库,并获得新创建的ID,这样我就可以正确地更新我的会话表(记录游戏会话的地方)。
新的位置和游戏编写正确,但是,当我添加新的位置时,会话表的游戏和位置字段中的值为空。
插入新游戏和位置时,注释掉的警报将返回正确的值。
function addSession(tx){
var locationID = $('#location').val();
var gameID = $('#game').val();
if ($('#location').val() == '0'){
tx.executeSql(
'INSERT INTO locations (lTitle) VALUES (?)',
[$('#newLocation').val()],
function(tx, results){
locationID = results.insertId;
},
errorCB
);
}
if ($('#game').val() == '0'){
tx.executeSql(
'INSERT INTO games (lTitle) VALUES (?)',
[$('#newGame').val()],
function(tx, results){
gameID = results.insertId;
},
errorCB
);
}
var sSQL = 'INSERT INTO sessions (date, duration, location, game, notes) VALUES '
+ '("'+$('#date').val()+' '+$('#time').val()+':00.000"'
+',2.5,'+locationID+','+gameID+',"'+$('#notes').val()+'")';
tx.executeSql(
sSQL,
[],
function(tx,results){
//todo after successful entry
},
errorCB
);
}
我最初认为这可能是因为插入会话表是在插入游戏和位置表之前执行的,但如果是这样的话,我会在游戏和位置字段中输入"0",而不是null。
当我使用游戏或位置菜单中的现有项目添加新会话时(ID将>0),插入操作正常。
以下是会话表的设置,以防它可能与数据类型冲突有关。我已经在返回的ID上尝试了parseInt,但结果与相同
tx.executeSql(
'CREATE TABLE IF NOT EXISTS sessions ' +
'(id INTEGER PRIMARY KEY , ' +
'date TEXT, ' +
'duration REAL, ' +
'game INTEGER, ' +
'location INTEGER, ' +
'notes TEXT' +
')'
);
事实证明,这是由于各种查询的执行顺序错误。
我设法通过如下方式分离函数来对其进行排序:
//FUNCTION TO ADD NEW LOCATIONS
function addLocation(tx){
tx.executeSql(
'INSERT INTO locations (lTitle) VALUES (?)',
[$('#newLocation').val()],
function(tx, results){
locationID = results.insertId;
},
errorCB
);
}
//FUNCTION TO ADD NEW GAMES
function addGame(tx){
tx.executeSql(
'INSERT INTO games (gTitle) VALUES (?)',
[$('#newGame').val()],
function(tx, results){
gameID = results.insertId;
},
errorCB
);
}
//FUNCTION TO ADD NEW SESSION
function addSessionGo(tx){
var sSQL = 'INSERT INTO sessions (date, game, location, notes) VALUES ' +
'("'+$('#date').val()+' '+$('#time').val()+':00.000"' +
','+gameID+','+locationID+',"'+$('#notes').val()+'")';
//alert(sSQL);
tx.executeSql(
sSQL,
[],
function(tx,results){
//todo after successful entry
//alert('Added new session');
},
errorCB
);
}
//FUNCTION TO START ADDING THE NEW SESSION
function addSession(tx){
locationID = $('#location').val();
gameID = $('#game').val();
if ($('#location').val() == '0'){
db.transaction(addLocation, errorCB);
}
if ($('#game').val() == '0'){
db.transaction(addGame, errorCB);
}
db.transaction(addSessionGo, errorCB);
}
相关文章:
- 数组在递归方法中设置为null
- 将样式表插入iframe
- Ckeditor-plugin:插入虚假元素add不情愿<p>标签前后
- 如何动态插入jquery代码
- 字符串在将其传递给另一个活动Android JavaScript时读取Null
- 无法获取属性'selectedIndex'的未定义引用或null引用
- Meteor方法在客户端返回null,在客户端运行的相同方法返回正确的值
- 动态插入的表:JQuery未检测到最后一行
- 来自文本输入null的html javascript变量
- 使用JavaScript动态插入DIV的成本有多高
- 带有填充属性的SVG矩形显示在包含元素的上方插入框阴影
- delete在Object上效率低下,但在DOM Element's的数据属性,与null out相比
- 将对象动态插入到现有对象中
- php代码在textbox更改事件上显示null
- 将数组中的值插入到表中
- 在 Java 中的 JavaScript 函数中插入 Wicket 值
- 我如何在数字插入中使用逗号,这样它就不会'不要破坏我的输入字段
- javascript,HTML表单:单击按钮插入NULL
- 电话间隙.正在向数据库表中插入Null值.数据类型冲突
- 当数据库值为 NULL 时,如何在 XML 标记之间插入空格