【问题标题】:Inserting dates in database (the browser database) using JavaScript使用 JavaScript 在数据库(浏览器数据库)中插入日期
【发布时间】:2018-07-19 16:54:09
【问题描述】:

我一直在从事一个大学项目,为此我需要使用日期并将它们输入数据库(Chrome 浏览器中的内置数据库)。具体来说,我将从用户那里获取一个日期并将其输入数据库。

HTML 代码如下:

<html>
<head>
  <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js"></script>
</head>
<body>
  <input type="date" id="dt">
  <input type="button" id="submit" value="INSERT DATE">
</body>
<script type="text/javascript" src="js/index.js"></script>
</html>

还有 JavaScript:

var db = openDatabase("Dates", "1.0", "Test Dates", 200000);
var createStatement = "CREATE TABLE IF NOT EXISTS Date (sampledate DATE)";
var insertStatement = "INSERT INTO Date (sampledate) VALUES (?)";

db.transaction(function(tx) {
  tx.executeSql(createStatement, []);
});

$(document).ready(function() {
  $("body").fadeIn(2000);
  $("#submit").click(insertdate);
});

function insertdate() {
  var datetemp = $("#dt");
  db.transaction(function(tx) {
    tx.executeSql(insertStatement, [datetemp])
  })
  alert("SUCCESS");
}

这是我在数据库中得到的:

如果我能得到一些帮助,那就太好了!

【问题讨论】:

  • 欢迎来到stackoverflow。你的问题是什么?预期的结果是什么?
  • 应该知道 WebSql 是一个弃用的 API。可能想要迁移到 indexedDB

标签: javascript html sql database


【解决方案1】:

您正在将 $("#dt") 传递给数据库,这是一个 jQuery 封装的对象,其中包含您的输入 DOM 对象。

只需更改这一行:

var datetemp = $("#dt");

到这里:

var datetemp = $("#dt").val();

它应该可以正常工作!

希望对你有帮助!

【讨论】:

    【解决方案2】:

    您传递的是日期时间对象而不是文本框值 在 Jquery 中使用 Val 函数 var datetemp = $("#dt").val();

    【讨论】:

      【解决方案3】:

      您将 [datetemp] 作为对象传递。

      function insertdate()
      {
          var datetemp = $("#dt");
          db.transaction(function(tx)
                        {
              tx.executeSql(insertStatement, [datetemp])    // your passing the object here
              })
          alert("SUCCESS");
      } 
      

      您需要遍历此对象并获取值。将它们写入数组。

      [datetemp].forEach(function(value){    // iterating through it . . .
          // do stuff here . . . (i.e inert values in to array)
      });
      

      然后添加数据库

      var insertStatement = "INSERT INTO Date [dbo].[sampledate] (col0, col1, col2 
      // ect . . .) VALUES ([array].day, [array].month, [array].year // ect . . .)";
      
      function insertdate()
      {
          var datetemp = $("#dt");
          db.transaction(function(tx)
                        {
              tx.executeSql(insertStatement)    // just take the object out
              })
          alert("SUCCESS");
      } 
      

      更改插入命令并在您拥有[datetime] 之后将其放入,这样会更简单:)

      var insertStatement = "INSERT INTO Date [dbo].[sampledate] (col0, col1, col2 
      // ect . . .) VALUES ([datetemp].day, [datetemp].month, [datetemp].year  // 
      ect . . .))";
      
      function insertdate()
      {
          var datetemp = $("#dt");
          db.transaction(function(tx)
                        {
              tx.executeSql(insertStatement)    // just take the object out
              })
          alert("SUCCESS");
      } 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-08-08
        • 2020-08-11
        • 1970-01-01
        • 2010-11-08
        • 2011-04-06
        • 1970-01-01
        相关资源
        最近更新 更多