SQLite RANDOM () Проблема - PullRequest
       4

SQLite RANDOM () Проблема

0 голосов
/ 03 февраля 2011

У меня есть JS, который создает базу данных SQLite и добавляет немного данных.

У меня есть функция, которая запрашивает ее, а затем выдает полученную информацию в виде предупреждения.

Если я попытаюсь вернуть случайное поле из базы данных, я не получу никакого результата (также нет явной ошибки).


<title>Golf score keeper</title>

<script src="http://www.google.com/jsapi"></script>

<script>
  google.load("jquery", "1.4.1");
</script>

<script>

  $(document).ready(function() {

    var db = window.openDatabase("scores", "", "Previous Scores", 1024*1000);

    db.transaction(function(tx) {
      tx.executeSql('CREATE TABLE IF NOT EXISTS Strokes(id INTEGER PRIMARY KEY, sample TEXT, sample2 TEXT)', []);
    });


    insertScores();
    extractScores()

  });

  function insertScores() {

    var example = "One";
    var example2 = "Two"; 

    db.transaction(function(tx) {
      tx.executeSql('INSERT INTO Strokes (sample, sample2) VALUES (?, ?)', [example, example2]);
    });


    db.transaction(function(tx) {
      tx.executeSql('INSERT INTO Strokes (sample, sample2) VALUES ("example3", "example4")', []);
      tx.executeSql('INSERT INTO Strokes (sample, sample2) VALUES ("example5", "example6")', []);

    });
  }

  function extractScores() {

    db.transaction(function(tx) {

      //THIS ONE FAILS

     // tx.executeSql('SELECT * FROM  Strokes ORDER BY RANDOM() LIMIT 1;', [], displayResults);

      tx.executeSql('SELECT * FROM  Strokes LIMIT 1;', [], displayResults);

    });
  }

  function displayResults(tx, rs){

        var $selectedAnswer = "";
          for (var i=0; i < rs.rows.length; i++) {
                var row = rs.rows.item(i);

            $selectedAnswer =($selectedAnswer + 'sample: ' + row['sample'] + ', sample2: ' + row['sample2']);
        }

        alert($selectedAnswer);
  }

</script>

Кто-нибудь может это понять?

Ответы [ 3 ]

0 голосов
/ 03 февраля 2011

Я попробовал Chrome. RANDOM () не поддерживается как функция в диалекте SQL. Аналогичные результаты в Firefox 4 Beta 9. Запрос считается недействительным!

0 голосов
/ 03 февраля 2011

Я не решил проблему, но создал обходной путь. Так как случайное не работает, и выбор счетчика не дал бы мне цифру для игры, это долгий путь, но он даст нам случайную цифру для запроса к нашей базе данных.

    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);

    }
0 голосов
/ 03 февраля 2011

Это никак не связано с SQLite.(Просто SQLite - это реализованный диалект SQL)
Это Локальное хранилище HTML5

Пример: Веб-хранилище HTML5 / localStorage (щелкните источник для получения дополнительной информации)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...