【问题标题】:How can i use the database sqlite in my application?如何在我的应用程序中使用数据库 sqlite?
【发布时间】:2020-10-04 08:02:37
【问题描述】:

我正在尝试将数据库与我的系统连接,但总是在调用该函数后在应用程序的浏览器中显示如下:

The "granjas" table is empty

代码如下:

在 JS 上:

var db = openDatabase("Meubanco", "3.0", "Mybase", 6000);
db.transaction(function(criar){
  criar.executeSql("CREATE TABLE granjas (ID INTEGER PRIMARY KEY AUTOINCREMENT, nome TEXT, email TEXT, cnpj TEXT)");
});

function cadastrar(){

var nome = document.getElementById("nome").value;
var email = document.getElementById("email").value;
var cnpj = document.getElementById("cnpj").value;

db.transaction(function(armazenar){
   armazenar.executeSql("INSERT INTO granjas (nome, email, cnpj) VALUES (?,?@email.com,?)", [nome, email, cnpj]);
   alert("Granja " + document.getElementById("nome").value + " Cadastrada!");
  });
};

在 HTML 上:

<form onsubmit="cadastrar();">
  <div class="form-group">
    <label>Nome</label>
    <input type="text" class="form-control" id="nome" placeholder="nome">
  </div>
  <div class="form-group">
    <label for="exampleInputEmail1">Endereço de email</label>
    <input type="email" class="form-control" id="email" aria-describedby="emailHelp" placeholder="email">
  </div>
  <div class="form-group">
    <label>CNPJ</label>
    <input type="text" class="form-control" id="cnpj" placeholder="cnpj">
  </div>
  <form>
  <div class="form-group">
    <label for="exampleFormControlFile1">Insira uma imagem da granja<small id="emailHelp" class="form-text text-muted">Ação Opcional.</small></label>
    <input type="file" class="form-control-file" id="imagem_da_empresa"/>
  </div>
  </form>
  <button type="button" class="btn btn-primary" onclick="cadastrar();">Cadastrar</button>
  <a type="button" class="btn btn-outline-info" href="listagem_de_granjas.html">Granjas Cadastrdas</a>
</form>

我想我想做什么很清楚。这是该项目的链接:https://github.com/Nidhoggui/beta-_projetoavicultura

【问题讨论】:

  • 在浏览器的开发者工具中点击Application左侧的Network标签。向数据库提交数据是否有错误?
  • 不,它只是不将数据发送到数据库
  • 看下面的答案

标签: javascript html sqlite


【解决方案1】:

问题

email?email.com 导致了问题

armazenar.executeSql("INSERT INTO granjas (nome, email?email.com, cnpj) VALUES (?,?,?)", [nome, email, cnpj])

说明

函数 .executeSql() 接受成功和错误回调 - 您可以使用它们来查看 .executeSql() 是否正确执行:

armazenar
   .executeSql(
       "INSERT INTO granjas (nome, email, cnpj) VALUES (?,?email.com,?)",
       [nome, email, cnpj], 
       function() { console.log("SUCCESS") }, 
       function(data, error) { console.log("There was an ERROR", error) });

上面的代码会将这个错误输出到控制台:

SQLError {code: 5, message: "could not prepare statement (1 near "@email": syntax error)"}code: 5message: "could not prepare statement (1 near "@email": syntax error)"__proto__: SQLError 

解决方案

function cadastrar(){
  var nome = document.getElementById("nome").value;
  var email = document.getElementById("email").value + '@email.com';
  var cnpj = document.getElementById("cnpj").value;

  db.transaction(function(armazenar){
    armazenar
       .executeSql(
           "INSERT INTO granjas (nome, email, cnpj) VALUES (?,?,?)",
           [nome, email, cnpj], 
           function() { 
                console.log("SUCCESS");
                alert("Granja " + document.getElementById("nome").value + " Cadastrada!");
            }, 
           function(data, error) { 
                console.log("There was an ERROR", error) 
                alert("There was a technical error. Try again.");
            });
  }); 
};

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-05
    • 1970-01-01
    • 2018-06-22
    • 2012-04-16
    • 2018-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多