【问题标题】:Inserting data into database [closed]将数据插入数据库[关闭]
【发布时间】:2012-08-21 04:10:47
【问题描述】:

我正在做一个关于在线考试系统的项目。一切正常,但我面临一个问题。用户首先通过输入用户名、密码、电话等创建帐户。然后将数据插入数据库并开始考试。它工作正常。但是当用户完成考试时,我想用用户名将分数添加到数据库中。为此,我在数据库中有一个名为 DATA 的表。我已经为用户名创建了一个会话并尝试获取该用户名的属性,但我无法将数据添加到数据库中。

我的代码如下:

String str = (String)session.getAttribute("UserName");
String q = "insert into Data (UserName, Marks) values ('"+str+"' , "+count+")";
System.out.println(q);

【问题讨论】:

  • 首先阅读JDBC
  • 在控制台上打印出 q 变量后如何处理?计数变量的值是多少?您可以发布更多代码吗?如果这是您的全部代码,它不会像您所说的那样在数据库中插入任何内容。
  • 我的项目中有包含所有 JDBC 相关代码的连接器类。
  • 这是仅用于将标记插入数据库的代码,而不是将整个用户数据插入数据库。这里,count 是存储用户分数的变量
  • 我打印了变量 q 来只检查天气查询是否正确??

标签: java jsp jakarta-ee servlets


【解决方案1】:

尝试将其添加到您的代码中,但在此之前了解JDBC

Connection con = null;
String url = "jdbc:mysql://localhost:3306/";
String db = "jdbctutorial";
String driver = "com.mysql.jdbc.Driver";
try {
    Class.forName(driver);
    con = DriverManager.getConnection(url + db, "root", "root");
    try {
        String str = (String)session.getAttribute("UserName");
        String q =
            "insert into Data (UserName, Marks) values ('" + str +
            "' , " + count + ")";
        Statement st = con.createStatement();
        int val = st.executeUpdate(q);
        System.out.println("Marks added.");
    } catch (SQLException s) {
        System.out.println("SQL statement is not executed!");
    }

}

您也可以使用PreparedStatement,它比Statement 更安全,性能也更好。

  String sql = "INSERT into Data VALUES(?,?)";
  PreparedStatement prest = con.prepareStatement(sql);
  prest.setString(1, str);
  prest.setInt(2, count);
  ps.executeUpdate();
  System.out.println("Marks added.");
  con.close();

【讨论】:

  • 我很惊讶你不提倡使用 PreparedStatement!
  • @adarshr 我没有使用 PreparedStatement,因为我觉得他是一个非常初学者并且在他的代码中他写了一个查询。所以我的目标是让他理解使用他的大部分代码.但现在你告诉我将编辑我的答案并添加 PreparedStatement 部分。
  • 当然。我觉得PreparedStatement 是即使是初学者也应该了解的基础知识之一。如果不是在第 1 天,至少在他们课程的第 2 天。
猜你喜欢
  • 2013-03-01
  • 1970-01-01
  • 2014-10-06
  • 1970-01-01
  • 1970-01-01
  • 2013-07-02
  • 2014-02-25
  • 2013-06-06
  • 1970-01-01
相关资源
最近更新 更多