Javascript SQLite RANDOM()问题

Javascript SQLite RANDOM()问题,javascript,jquery,sqlite,html,local-storage,Javascript,Jquery,Sqlite,Html,Local Storage,我有一些JS创建了一个SQLite数据库并插入了一些数据 我有一个函数可以查询它,然后将结果信息作为警报输出 如果我尝试从数据库中获取一个随机场,我不会得到任何结果(也没有明显的错误) 高尔夫记分员 load(“jquery”,“1.4.1”); $(文档).ready(函数(){ var db=window.openDatabase(“分数”,“以前的分数”,1024*1000); 数据库事务(功能(tx){ tx.executeSql('CREATE TABLE IF NOT EXIS

我有一些JS创建了一个SQLite数据库并插入了一些数据

我有一个函数可以查询它,然后将结果信息作为警报输出

如果我尝试从数据库中获取一个随机场,我不会得到任何结果(也没有明显的错误)


高尔夫记分员
load(“jquery”,“1.4.1”);
$(文档).ready(函数(){
var db=window.openDatabase(“分数”,“以前的分数”,1024*1000);
数据库事务(功能(tx){
tx.executeSql('CREATE TABLE IF NOT EXISTS Strokes(id INTEGER主键,sample TEXT,sample2 TEXT)),[]);
});
插入分数();
分数()
});
函数insertScores(){
var example=“一”;
var example2=“两个”;
数据库事务(功能(tx){
tx.executeSql('插入笔划(样本,样本2)值(?,)',[示例,示例2]);
});
数据库事务(功能(tx){
tx.executeSql('INSERT-INTO-Strokes(sample,sample2)值(“example3”,“example4”),[]);
tx.executeSql('INSERT-INTO-Strokes(sample,sample2)值(“example5”、“example6”),[]);
});
}
函数(){
数据库事务(功能(tx){
//这个失败了
//tx.executeSql('SELECT*FROM Strokes ORDER BY RANDOM(),LIMIT 1;',[],displayResults);
tx.executeSql('从笔划限制1中选择*,[],显示结果);
});
}
功能显示结果(发送、接收){
var$selectedAnswer=“”;
对于(变量i=0;i


有人能理解这一点吗?

这与SQLite毫无关系。(只是SQLite是实现的SQL方言)
它是


示例:(单击查看源获取更多信息)

我已经用Chrome运行了它。SQL方言中不支持将RANDOM()作为函数。Firefox 4 Beta 9中也有同样的结果。该查询被视为无效

我还没有解决这个问题,但我已经找到了解决办法。 由于random不起作用,而且select count不会给我一个数字来处理,这是一个很长的过程,但它会给我们一个随机数字来查询数据库

    function finalScores() {

        //This gets a the last id in the table "Strokes", we'll use this to generate a random number
        db.transaction(function(tx) {
           tx.executeSql('SELECT id FROM  Strokes ORDER BY id DESC limit 1;', [], lastNumber);
        });
    }


    function lastNumber(tx, rs){

        var $lastNo = "";

            //This sets the last id as $lastNo to use later
            for (var i=0; i < rs.rows.length; i++) {
            var row = rs.rows.item(i);
            var $lastNo = row['id'];        
        }

    //This should be the last number    
    alert($lastNo);


    //We use this to avoid getting Zero as an answer

    function randomFromTo(from, to){
    return Math.floor(Math.random() * (to - from + 1) + from);
    }
        //This generates a random number between [and including] 1 and your last number
        var $randomNum = randomFromTo(1, $lastNo);

    //This is our random number
    alert($randomNum);

    }
函数finalScores(){
//这将获取表“Strokes”中最后一个id的值,我们将使用它生成一个随机数
数据库事务(功能(tx){
tx.executeSql('SELECT id FROM Strokes ORDER BY id DESC limit 1;',[],lastNumber);
});
}
功能最新编号(tx、rs){
var$lastNo=“”;
//这会将最后一个id设置为$lastNo以供以后使用
对于(变量i=0;i
本地存储是指创建本地值对。当你创建一个开放式数据库时,你使用SQLite——在webkit、gecko等中(进一步阅读你发给我的链接!)这是一个很好的例子,但我想使用SQLite,而不是localstorage,它们是两个独立的实体。RANDOM()是SQLite版本的RAND()。所以除非我用错了,否则这应该行得通!当然可以,但是chrome/firefox中嵌入的sqlite版本不支持此功能。尝试用id替换RANDOM(),查询就可以了!啊,那么获取随机行的最佳方法是什么?进行计数并将其用作最大值,使用js从中生成一个随机数,然后在查询中使用该随机数?
    function finalScores() {

        //This gets a the last id in the table "Strokes", we'll use this to generate a random number
        db.transaction(function(tx) {
           tx.executeSql('SELECT id FROM  Strokes ORDER BY id DESC limit 1;', [], lastNumber);
        });
    }


    function lastNumber(tx, rs){

        var $lastNo = "";

            //This sets the last id as $lastNo to use later
            for (var i=0; i < rs.rows.length; i++) {
            var row = rs.rows.item(i);
            var $lastNo = row['id'];        
        }

    //This should be the last number    
    alert($lastNo);


    //We use this to avoid getting Zero as an answer

    function randomFromTo(from, to){
    return Math.floor(Math.random() * (to - from + 1) + from);
    }
        //This generates a random number between [and including] 1 and your last number
        var $randomNum = randomFromTo(1, $lastNo);

    //This is our random number
    alert($randomNum);

    }