类型不匹配:无法从 java.sql.Connection 转换为 com.mysql.jdbc.Connection

Posted

技术标签:

【中文标题】类型不匹配:无法从 java.sql.Connection 转换为 com.mysql.jdbc.Connection【英文标题】:Type mismatch: cannot convert from java.sql.Connection to com.mysql.jdbc.Connection 【发布时间】:2014-02-12 11:38:32 【问题描述】:
import java.io.IOException;
import java.sql.DriverManager;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.mysql.jdbc.*;

*// Here,in below 2 statement, I got 2 the same error as shown in title*

**Connection con = DriverManager.getConnection("localhost:3306", "root","simple");               
Statement stmt = con.createStatement();**
    if(stmt.execute(sql))
    System.out.println("Sql Statement Executed.");
    
    else
    
        System.out.println("Sql Statement not eexecuted.");
    
    if((unm != null) && (pwd != null))
        RequestDispatcher rd =request.getRequestDispatcher("Home.jsp");
        rd.forward(request, response);
    



我正在尝试将数据从 servlet 发送到 mysql 服务器,但在 servlet 中我得到了

错误:“”

谁能建议我为我的代码删除错误的方法。我不明白。

【问题讨论】:

【参考方案1】:

我认为您使用了错误的连接字符串,并且驱动程序管理器不知道如何实例化连接。 documentation 有更多关于格式的信息。

它认为代码应该是这样的

con = DriverManager.getConnection("jdbc:mysql://localhost/test","root","simple");

我认为导入存在问题,如另一个问题所述:Type mismatch: cannot convert from Connection to Connection,您需要import java.sql.Connection;

编辑

要修复 DriverManager 错误,您需要使用以下代码注册驱动程序(取自 mysql 文档)

    try 
        // The newInstance() call is a work around for some
        // broken Java implementations

        Class.forName("com.mysql.jdbc.Driver").newInstance();
     catch (Exception ex) 
        // handle the error
    

【讨论】:

谢谢,Augusto 的回复,是的,它已解决,但我仍然收到“无法解决 DriverManager”错误.. 你可能还没有注册mysql驱动。请阅读此documentation【参考方案2】:

删除import com.mysql.jdbc.* 并使用import java.sql.Connection。我想会没问题的。

【讨论】:

是的,它甚至可以工作,但我想使用 mysql 作为后端工具,DriverManager 无法解决错误仍然来.. 匆忙,我忘了,这是javase规范中提供的连接接口,它处理DriverManger给出的对象>getConnection()...!!【参考方案3】:

我正在回答一个老问题,但我遇到了同样的问题,我通过导入所有库解决了这个问题:

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

希望对你有帮助。

【讨论】:

【参考方案4】:

尝试导入 java.sql.Connection 和 java.sql。* 我希望它会起作用。我也遇到了这个错误,我尝试了很多方法来解决它,但我也从你在这个页面的测验中得到了它。我能够解决它。

谢谢你们所有的救生员

【讨论】:

正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center。

以上是关于类型不匹配:无法从 java.sql.Connection 转换为 com.mysql.jdbc.Connection的主要内容,如果未能解决你的问题,请参考以下文章

类型不匹配:无法从 java.sql.Connection 转换为 com.mysql.jdbc.Connection

Android - 上下文 - Google Maps V2 - 类型不匹配:无法从 Object 转换为 WindowManager

从函数返回数组时类型不匹配

NSArray元素的原因无法与Swift数组元素类型匹配

由于 MIME 类型不匹配,无法加载 JavaScript 文件

使用Scala宏无法解释的类型不匹配