javascript中函数的SQL列默认值
sql column default value with functions in javascript
我是SQL新手,但我正试图在jquery $(文档)中使用javascript在html5 SQL存储中设置数据库。准备语句。我一直在Chrome和firefox中进行测试,但firefox根本不起作用,我在Chrome中遇到的问题是,我可以设置一个默认值,如果它是一个静态值,但是当我尝试使用一个函数时,事情不会变得那么好,我认为这段代码只调用默认函数一次,当我实际上想要它每次调用函数。然而,当我尝试这样做时,函数ErrorDB被调用。下面是代码:
$(document).ready(function()
{
var db;
try{if(window.openDatabase){
db =openDatabase("fetchnotes", "1.0","fetchnotesDB",1000000);
if (!db) {alert("failed to load database on disk"); return;};
}
else{
alert("could not open database.");
return;
}
}catch(err){alert("error "+err); return;}
db.transaction(initializeDB, errorDB);
});
function initializeDB(tx){
tx.executeSql('Drop TABLE IF EXISTS NOTES');
tx.executeSql('CREATE TABLE IF NOT EXISTS'+
' NOTES(ID int primary key,NoteText, LastModified Date NOT NULL DEFAULT "'
+defaultLastModified()+ '")');
tx.executeSql('INSERT INTO NOTES (ID, NoteText) VALUES (1, "make a better database") ');
}
function errorDB(tx,err)
{
alert("error "+err);
}
function defaultLastModified()
{
var result= new Date();
return result;
}
好吧,我找到了一个解决问题的办法,那就是我有一个不正确的数据类型以及其他一些事情。更正后的代码如下:
tx.executeSql("CREATE TABLE IF NOT EXISTS"+
" NOTES(ID INTEGER PRIMARY KEY,NoteText TEXT ," +
"LastModified TIMESTAMP DEFAULT (datetime('now','localtime')));");
在技术上不需要'localtime',省略它意味着时间将是GMT,这是SQL的标准。然而,我仍然不知道如何在一般情况下获得用户定义的函数作为默认值,这仍然是我的主要问题。
我认为有三件事是错的。
- 我很确定JS日期对象不适合sql查询(
... "' + defaultLastModified() + "' ...
)。 - 如果它适合,它也不会像你想的那样工作:
defaultLastModified()
将返回now
,所以当你在2周内添加记录时,它仍然包含now
(所以在添加记录之前2周)。 - 没有日期(在SQL中)默认默认值(这将自动填写真正的
now
,总是)?
我的理解是executeSql只支持基于WebKit的浏览器,因此它不能在Firefox或IE中工作。我建议寻找另一种方法来写入浏览器端数据库。
对于WebKit浏览器(Chrome, Safari),您可能想尝试使用分号来关闭SQL语句。
例子tx。executeSql('CREATE TABLE IF NOT EXISTS, NOTES(ID int primary key,NoteText, LastModified Date NOT NULL DEFAULT "' + defaultLastModified() + '");');
相关文章:
- 我的shareService在angular 2中发送值工作正常,但当我渲染我的另一个组件时,会获得默认值
- jquerydatetimepicker日期和时间应在框默认值中,而无需单击框
- 如果值为空,如何设置输入的默认值?jQuery
- 骨干模型默认值-todos.js示例中不必要的代码
- jquery日期选择器年份范围默认值
- Html5输入属性的默认值,如最小值、最大值、大小等
- 根据两个下拉列表的默认值禁用按钮
- 如何创建具有默认值的JavaScript对象字段?(AngularJS模型相关)
- Angularjs-设置不带ng选项的select的默认值
- jQuery Datepicker从日期开始设置默认值
- 如何设置浏览器打开的文件对话框的文件名(一些默认值)
- JQuery BlockUI鼠标加载光标没有't在Google Chrome中返回默认值
- Selectize选择默认值
- 在KeystoneJS中为Types.Money设置默认值
- 是否可以同时为一个元素的所有事件指定阻止默认值
- 防止在IE7中按回车键时出现默认值
- 如何覆盖jqGrid's语言默认值
- 如何为显示jquery滑块值的文本框设置默认值
- 当数组在angularjs中没有可比较的值时,如何分配默认值
- javascript中函数的SQL列默认值