相关疑难解决方法(0)

将Java连接到MySQL数据库

你如何用Java连接到MySQL数据库?

当我尝试时,我明白了

java.sql.SQLException: No suitable driver found for jdbc:mysql://database/table
    at java.sql.DriverManager.getConnection(DriverManager.java:689)
    at java.sql.DriverManager.getConnection(DriverManager.java:247)
Run Code Online (Sandbox Code Playgroud)

要么

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
Run Code Online (Sandbox Code Playgroud)

要么

java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver
Run Code Online (Sandbox Code Playgroud)

java mysql jdbc

309
推荐指数
5
解决办法
55万
查看次数

java.lang.IllegalStateException:在提交响应后不能(转发| sendRedirect |创建会话)

抛出此方法

java.lang.IllegalStateException:在提交响应后无法转发

我无法发现问题.有帮助吗?

    int noOfRows = Integer.parseInt(request.getParameter("noOfRows"));
    String chkboxVal = "";
    // String FormatId=null;
    Vector vRow = new Vector();
    Vector vRow1 = new Vector();
    String GroupId = "";
    String GroupDesc = "";
    for (int i = 0; i < noOfRows; i++) {
        if ((request.getParameter("chk_select" + i)) == null) {
            chkboxVal = "notticked";
        } else {
            chkboxVal = request.getParameter("chk_select" + i);
            if (chkboxVal.equals("ticked")) {
                fwdurl = "true";
                Statement st1 = con.createStatement();
                GroupId = request.getParameter("GroupId" + i);
                GroupDesc = request.getParameter("GroupDesc" + i); …
Run Code Online (Sandbox Code Playgroud)

servlets response forward illegalstateexception requestdispatcher

90
推荐指数
3
解决办法
26万
查看次数

在多线程系统中使用静态java.sql.Connection实例是否安全?

我在Tomcat上运行Web应用程序.我有一个处理所有数据库查询的类.此类包含Connection返回查询结果的对象和方法.

这是连接对象:

private static Connection conn = null;
Run Code Online (Sandbox Code Playgroud)

它只有一个实例(单例).

另外,我有执行查询的方法,例如在db中搜索用户:

public static ResultSet searchUser(String user, String pass) throws SQLException
Run Code Online (Sandbox Code Playgroud)

此方法使用静态Connection对象.我的问题是,我在静态Connection对象线程中的使用是否安全?或者当很多用户调用该searchUser方法时会引起问题吗?

java connection multithreading servlets jdbc

50
推荐指数
1
解决办法
3万
查看次数

我应该如何在基于servlet的应用程序中连接到JDBC数据库/数据源?

我有一个外部MySQL服务器,设置和工作正常.我在Eclipse中创建了一个数据库连接,可以在Data Source Explorer选项卡中查看数据库.

现在,我有一个需要访问该数据库的servlet.我该怎么做?有没有办法引用在数据源资源管理器中创建的数据库连接,还是我必须两次定义所有内容?

另外,打开连接的最佳方法是什么?我已经mysql-connector-java-5.1.11-bin.jar包含了该文件,并且我发现了两种有效的方法:

MysqlDataSource d = new MysqlDataSource();
d.setUser("user");
d.setPassword("pass");
d.setServerName("hostname.com");
d.setDatabaseName("db");
Connection c = d.getConnection();
Run Code Online (Sandbox Code Playgroud)

Connection c = DriverManager.getConnection("jdbc:mysql://hostname.com/db","user","pass");
Run Code Online (Sandbox Code Playgroud)

两者都不是最佳的,因为首先,它们都使用硬编码的字符串.这是一个Java EE Web应用程序项目,是否有一个放置连接数据的好地方?或者有没有办法放弃所有这些并只使用数据源资源管理器中的连接?

tomcat servlets datasource jdbc

19
推荐指数
1
解决办法
7万
查看次数

JDBC MySql连接池实践,以避免耗尽连接池

我在GlassFish上有一个Java-JSF Web应用程序,我想在其中使用连接池.因此,我创建了一个applicationscoped bean,它Connection为其他bean的实例提供服务:

public class DatabaseBean {

    private DataSource myDataSource;

    public DatabaseBean() {
        try {
            Context ctx = new InitialContext();
            ecwinsDataSource = (DataSource) ctx.lookup("jdbc/myDataSource");
        } catch (NamingException ex) {
            ex.printStackTrace();
        }
    }

    public Connection getConnection() throws ClassNotFoundException, SQLException, InstantiationException, IllegalAccessException {
        Connection connection = myDataSource.getConnection();
        System.out.println("Succesfully connected: " + connection);
        //Sample: Succesfully connected: com.sun.gjc.spi.jdbc40.ConnectionHolder40@7fb213a5
        return connection;
    }
}
Run Code Online (Sandbox Code Playgroud)

这样连接池的填充速度非常快; 在通过"db-related"视图进行一些导航后,应用程序将停止并显示以下内容:

RAR5117:无法从连接池[mysql_testPool]获取/创建连接.原因:正在使用的连接等于max-pool-size和expired max-wait-time.无法分配更多连接.RAR5114:分配连接时出错:[分配连接时出错.原因:正在使用的连接等于max-pool-size和expired max-wait-time.无法分配更多连接.] java.sql.SQLException:分配连接时出错.原因:正在使用的连接等于max-pool-size和expired max-wait-time.无法分配更多连接.

我正在关闭每种方法中的连接和其他资源.应用程序通过独立连接运行一切正常.

我究竟做错了什么?任何提示或建议将不胜感激.

java mysql connection-pooling jdbc glassfish

10
推荐指数
1
解决办法
3万
查看次数

DBCP返回已关闭的连接

我们看到我们的数据库连接因org.apache.commons.dbcp.BasicDataSource插槽写入错误而死的情况:

com.microsoft.sqlserver.jdbc.SQLServerException: Connection reset by peer: socket write error
Run Code Online (Sandbox Code Playgroud)

当然,所有后续写入连接的尝试都会失败:

com.microsoft.sqlserver.jdbc.SQLServerException: The connection is closed.
Run Code Online (Sandbox Code Playgroud)

更新代码以捕获此类异常并在发生新连接时请求它,它再次失败.我是否正确怀疑DataSource#getConnection()每次呼叫时呼叫实际上并没有提供新的连接?是不是只是重用现有的连接,这是关闭的?

如果我是正确的,什么是丢弃旧连接并请求新连接的正确方法?

编辑:这是我想知道的更简洁的版本:

Connection c1, c2;
c1 = DatabaseManager.getConnection();
// c1.close() not called
c2 = DatabaseManager.getConnection(); 
Run Code Online (Sandbox Code Playgroud)

"c1 == c2"是真实的陈述吗?或者分配了两个连接?如果是后者,那么像这样的代码表示"连接池泄漏":

Connection c1;
c1 = DatabaseManager.getConnection();
// c1.close() not called
c1 = DatabaseManager.getConnection();
Run Code Online (Sandbox Code Playgroud)

java jdbc apache-commons-dbcp

5
推荐指数
1
解决办法
2万
查看次数

当我的应用程序失去连接时,我应该如何恢复它?

我有一个应用程序,我正在连接到MySQL数据库.它在半夜失去连接,然后喷出null连接,JDBC在X秒内没有收到消息.

getConnection()在我做任何需要与SQL服务器通信的事情之前,我打电话.

这是我的getConnection()方法:

private Connection getConnection() {
    try {
        if (connection != null) {
            if (connection.isClosed() || !connection.isValid(10000)) {
                this.initializeRamsesConnection();
            }
        } else {
            this.initializeRamsesConnection();
        }
    } catch (Exception e) {
        debug("Connection failed: " + e);
    }
    return connection;
}
Run Code Online (Sandbox Code Playgroud)

initializeRamsesConnection()方法中,我将密码等信息放入字符串中,然后以标准JDBC方式创建连接.

然后我称这个方法:

private Connection getConnectionFromConnectionString() {
    Connection con = null;
    String driver = "com.mysql.jdbc.Driver";
    try {
        Class.forName(driver);//jdbc sorcery
        //if there is no connection string
        if (getConnectionString() == null) {
            HMIDatabaseAdapter.debug("No connection string");
        } …
Run Code Online (Sandbox Code Playgroud)

java database-connection jdbc

4
推荐指数
1
解决办法
7693
查看次数

如何删除jsf 2缓存?

我有jsf网页,这需要从以前的页面查询一些字符串.

我的问题是这个主页似乎有缓存的值,没有变化即使我将这些值更改为null,它应该得到空页但它变得更旧的值.

所以我的问题是:每当我调用它或按F按钮时,如何让我的主jsf页面重新加载或缓存被删除?

我试过的JSF示例代码:

     <h:head style="width: 200px; ">
    <f:facet name="first">
        <meta http-equiv="X-UA-Compatible" content="edge, chrome=1" />
        <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="-1" />
    </f:facet>
Run Code Online (Sandbox Code Playgroud)

java类:

String SID = FacesContext.getCurrentInstance().getExternalContext()
        .getRequestParameterMap().get("SID");

String from = FacesContext.getCurrentInstance().getExternalContext()
        .getRequestParameterMap().get("from");

String to = FacesContext.getCurrentInstance().getExternalContext()
        .getRequestParameterMap().get("to");

String class_id = FacesContext.getCurrentInstance()
        .getExternalContext().getRequestParameterMap().get("class_id");


if (SID==null) {
    try {
        Dbconnection NewConnect = new Dbconnection();
        Connection con = NewConnect.MakeConnect();
        Statement stmt = con.createStatement();
        ResultSet rs = stmt
                .executeQuery("SELECT a.course_id, a.teacher_id, a.class_id, a.day_id, a.state, a.apssent_date, …
Run Code Online (Sandbox Code Playgroud)

jsf browser-cache primefaces jsf-2

3
推荐指数
1
解决办法
1万
查看次数

在构造函数中抛出异常是明智的吗?

我正在构建DB类,在构造函数中我想与数据库建立连接,以便该类中的其余函数可以访问静态dbLink.这是一个好方法吗?

java architecture jdbc

2
推荐指数
1
解决办法
776
查看次数

java.io.NotSerializableException:org.postgresql.jdbc4.Jdbc4Connection

我有一个带有视图范围的托管bean.问题是,当我运行Web应用程序时,我有以下错误:

GRAVE: Error Rendering View[/login.xhtml]
java.io.NotSerializableException: org.postgresql.jdbc4.Jdbc4Connection
    at java.io.ObjectOutputStream.writeObject0(Unknown Source)
    at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)
    at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
    at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
    at java.io.ObjectOutputStream.writeObject0(Unknown Source)
    at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)
    at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
    at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
    at java.io.ObjectOutputStream.writeObject0(Unknown Source).........
Run Code Online (Sandbox Code Playgroud)

但是当我将范围更改为会话或请求时,一切正常.任何人都可以告诉我,如果我做错了什么?也许我忘记了配置或什么?

java jsf jdbc

0
推荐指数
1
解决办法
1418
查看次数

在Java中使用数据库mysql

我已经开始尝试一些东西,以便我可以将Java数据库与Java一起使用.首先,我对此有一些疑问.

我在PHP开发中使用了很多mysql,但从未使用过Java.我可以使用MAMP带来的MySQL,还是我必须单独安装它?

第二个..我已经在教程的帮助下创建了这段代码,但我得到的唯一输出是

com.mysql.jdbc.Driver

我用过的代码你可以在下面找到:

package Databases;

import java.sql.*;

public class MysqlConnect{

/* These variable values are used to setup
the Connection object */

 static final String URL = "jdbc:mysql://localhost:3306/test";
 static final String USER = "root";
 static final String PASSWORD = "root";
 static final String DRIVER = "com.mysql.jdbc.Driver";

 public Connection getConnection() throws SQLException {
    Connection con = null;
    try {
       Class.forName(DRIVER); 
       con = DriverManager.getConnection(URL, USER, PASSWORD);
    }
    catch(ClassNotFoundException e) {
       System.out.println(e.getMessage());
       System.exit(-1);
    }
    return con;
 }

 public void getEmployees() { …
Run Code Online (Sandbox Code Playgroud)

java mysql jdbc

0
推荐指数
1
解决办法
152
查看次数

将preparedstatement插入数据库 - PSQL

这似乎是一个非常简单的问题,但我无法弄清楚我的问题是什么.我有一个方法addTask,它向我们的数据库添加一些信息,如下面的代码所示:

public static boolean addTask(String name, String question, int accuracy, int type){
    StringBuilder sql = new StringBuilder();
      sql.append("INSERT INTO tasks (name, question, type, accuracy) ");
      sql.append("VALUES(?, ?, ?, ?)");
      try {
        Connection c = DbAdaptor.connect();
        PreparedStatement preparedStatement = c.prepareStatement(sql.toString());
        preparedStatement.setString(1, name);
        preparedStatement.setString(2, question);
        preparedStatement.setInt(3, type);
        preparedStatement.setInt(4, accuracy);
        preparedStatement.execute();
        preparedStatement.close();
        c.close();
            return true;
      }       
      catch (SQLException e) {
          e.printStackTrace();
          return false;
      }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是preparedStatement.execute()总是返回false,表示信息尚未添加到数据库中.我可以运行psql,这确认没有任何内容写入数据库.连接肯定连接到正确的数据库(我放入一些其他printlns等来检查这个).我试图插入一个新的初始化表,看起来像这样:

CREATE TABLE tasks
(
  id SERIAL PRIMARY KEY,
  submitter INTEGER REFERENCES accounts (id),
  name VARCHAR(100) NOT NULL, …
Run Code Online (Sandbox Code Playgroud)

java postgresql jdbc

0
推荐指数
1
解决办法
7380
查看次数