java - 不会在我的 java servlet 中显示我的数据库信息

标签 java mysql servlets

我有这段代码,它不会显示我数据库中的内容。我创建了一个表并插入了一些数据。我知道一切都是好的并且有效的。但我遇到的问题是它不会显示任何数据,我不知道为什么......所以如果有人可以帮助我那就太好了。只是不明白我做错了什么,或者如果我遗漏了一些东西,这是我的代码。如果这对 servlet 部分很重要,我会使用 tomcat。

import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;

public class test extends HttpServlet{

 static final String JDBC_DRIVER="com.mysql.jdbc.Driver";  
 static final String DB_URL="jdbc:mysql://localhost/csc3610_Connection";

 //  Database credentials
  static final String USER = "root";
  static final String PASS = "";


public void doGet(HttpServletRequest request,
                HttpServletResponse response)
        throws ServletException, IOException
{


  // Set response content type
  response.setContentType("text/html");
  PrintWriter out = response.getWriter();
  String title = "Database Result";
  String docType =
    "<!doctype html public \"-//w3c//dtd html 4.0 " +
     "transitional//en\">\n";
     out.println(docType +
     "<html>\n" +
     "<head><title>" + title + "</title></head>\n" +
     "<body bgcolor=\"#f0f0f0\">\n" +
     "<h1 align=\"center\">" + title + "</h1>\n");

     Connection conn=null;
     Statement stmt=null;
  try{
     // Register JDBC driver
     Class.forName("com.mysql.jdbc.Driver");

     // Open a connection
     conn = DriverManager.getConnection(DB_URL,USER,PASS);

     // Execute SQL query
     stmt = conn.createStatement();
     String sql;
     sql = "SELECT FROM csc3610_Connection.Employees";
     ResultSet rs = stmt.executeQuery(sql);

     // Extract data from result set
     while(rs.next()){
        //Retrieve by column name
        int id  = rs.getInt("id");
        int age = rs.getInt("age");
        String first = rs.getString("first");
        String last = rs.getString("last");

        //Display values
        out.println("ID: " + id + "<br>");
        out.println(", Age: " + age + "<br>");
        out.println(", First: " + first + "<br>");
        out.println(", Last: " + last + "<br>");
     }
     out.println("</body></html>");

     // Clean-up environment
     rs.close();
     stmt.close();
     conn.close();
  }catch(SQLException se){
     //Handle errors for JDBC
     se.printStackTrace();
  }catch(Exception e){
     //Handle errors for Class.forName
     e.printStackTrace();
  }finally{
     //finally block used to close resources
     try{
        if(stmt!=null)
           stmt.close();
     }catch(SQLException se2){
     }// nothing we can do
     try{
        if(conn!=null)
        conn.close();
     }catch(SQLException se){
        se.printStackTrace();
     }//end finally try
  } //end try
 }
} 

最佳答案

首先,SELECT 语句是错误的。你必须使用

sql = "SELECT * FROM csc3610_Connection.Employees";

然后请重构检索数据库连接的代码。您不应该对每个请求都打开一个新连接。此外,Java 中的类名应以大写字母开头。看看Java Code Conventions

例如:

private Connection connection = null;

public void init(ServletConfig config) throws ServletException
{
    super.init(config);
    try 
    {
        // Load the MySQL driver
        Class.forName(JDBC_DRIVER);
        connection = DriverManager.getConnection(
        DB_URL, "root", "");
    }
    catch (ClassNotFoundException e)
    { 
        throw new UnavailableException(this, "Couldn't load database driver");
    }    
    catch (SQLException e) 
    { 
        throw new UnavailableException(this, "Couldn't get db connection");
    }    
}

然后在你的 doGet-Method 中使用如下内容:

     // Execute SQL query
     stmt = connection.createStatement();
     String sql = "SELECT * FROM csc3610_Connection.Employees";
     ResultSet rs = stmt.executeQuery(sql);

关于java - 不会在我的 java servlet 中显示我的数据库信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27281872/

相关文章:

javascript - HTML5 Web 存储创建变量

java - 从jsp页面的多选复选框转换参数

java.lang.NullPointerException at org.apache.jsp.page_jsp._jspInit 在 Tomcat 6 中,但在 Tomcat 7 中有效

java - 在 Java Servlet 中解析包含数组的 JSON 对象的正确方法(以 Gson 为例)

java - 如何围绕具有相似行为的不相交类型设计代码?

java - 创建循环后缀数组

php - Laravel 5.1 - 相关模型上的模型观察者

mysql - 如何将查询结果保存在变量中并在另一个查询中使用它

java - 如何修复 Tomcat 9 上的部署错误 - Java 动态 Web 项目中的 java.lang.IllegalArgumentException?

java - 如何打开具有预定义大小的 JFileChooser