JSP 没有找到合适的驱动程序为jdbc mysql

dxxyhpgq  于 2024-01-04  发布在  Mysql
关注(0)|答案(1)|浏览(243)

我们遇到了一些问题,无法找出为什么在使用DriverManager创建连接时会收到错误消息。

这是我们的代码:

  1. package Databank;
  2. import java.sql.Connection;
  3. import java.sql.DriverManager;
  4. import java.sql.PreparedStatement;
  5. import java.sql.ResultSet;
  6. import java.sql.Statement;
  7. import java.util.List;
  8. public class Connectie_Databank
  9. {
  10. //Eigenschappen databank
  11. private String connectieString = "";
  12. private Connection connectie = null;
  13. private PreparedStatement prepStatement = null;
  14. private Statement statement = null;
  15. private ResultSet inhoudQuery = null;
  16. //Inloggegevens PhpMyAdmin
  17. private String gebruikersnaam, wachtwoord;
  18. //Constructor met standaardinstellingen
  19. public Connectie_Databank()
  20. {
  21. this.connectieString = "jdbc:mysql://localhost/groep2_festivals";
  22. this.gebruikersnaam = "root";
  23. this.wachtwoord = "";
  24. }
  25. //Constructor met nieuwe data
  26. public Connectie_Databank(String connectionString, String gebruikersnaam, String wachtwoord)
  27. {
  28. this.connectieString = connectionString;
  29. this.gebruikersnaam = gebruikersnaam;
  30. this.wachtwoord = wachtwoord;
  31. }
  32. /**
  33. * Deze methode zorgt ervoor dat er verbinding gemaakt wordt me de databank
  34. */
  35. public void maakConnectie()
  36. {
  37. try
  38. {
  39. connectie = DriverManager.getConnection(connectieString, gebruikersnaam, wachtwoord);
  40. }
  41. catch(Exception e)
  42. {
  43. System.err.println("FOUTMELDING: " + e.getMessage());
  44. }
  45. }
  46. public void voerQueryUit(String query, List<String> parameters)
  47. {
  48. try
  49. {
  50. if(parameters.size() > 0)
  51. {
  52. //Reden preparedStatement: geen SQL-Injectie!
  53. prepStatement = connectie.prepareStatement(query);
  54. //Lijst met parameters uitlezen om de preparedStatement op te vullen
  55. for(int i=1; i<=parameters.size(); i++)
  56. {
  57. prepStatement.setString(i, parameters.get(i-1));
  58. }
  59. inhoudQuery = prepStatement.executeQuery();
  60. }
  61. else
  62. {
  63. statement = connectie.createStatement();
  64. inhoudQuery = statement.executeQuery(query);
  65. }
  66. }
  67. catch(Exception e)
  68. {}
  69. }
  70. public ResultSet haalResultSetOp()
  71. {
  72. return inhoudQuery;
  73. }
  74. public void sluitConnectie()
  75. {
  76. //ConnectieString leegmaken en alle objecten die te maken hebben met de connectie sluiten
  77. try
  78. {
  79. connectieString = "";
  80. if(connectie != null)
  81. {
  82. connectie.close();
  83. }
  84. if(prepStatement != null)
  85. {
  86. prepStatement.close();
  87. }
  88. if(inhoudQuery != null)
  89. {
  90. inhoudQuery.close();
  91. }
  92. }
  93. catch(Exception e)
  94. {}
  95. }
  96. }

字符串
我们在JSP页面中调用我们的连接类,如下所示:

  1. <%
  2. Connectie_Databank connectie;
  3. ResultSet res;
  4. connectie = new Connectie_Databank();
  5. connectie.maakConnectie ();
  6. List<String> lijstParams = new ArrayList<String>();
  7. connectie.voerQueryUit ("SELECT * FROM festivals", lijstParams);
  8. res = connectie.haalResultSetOp();
  9. %>


这发生在我们页面的头部。第一次加载页面时,我们得到一个错误:
没有找到合适的驱动程序为jdbc mysql
但是当我们刷新时,我们查询的信息会正确显示。
所以,我们只在第一次加载时得到一个错误消息,之后,没有错误发生,一切正常。
有人能帮我们吗?

agyaoht7

agyaoht71#

首先,您需要在连接之前加载JDBC驱动程序

  1. // Notice, do not import com.mysql.jdbc.*
  2. // or you will have problems!
  3. //Load Driver
  4. try {
  5. // The newInstance() call is a work around for some
  6. // broken Java implementations
  7. Class.forName("com.mysql.jdbc.Driver").newInstance();
  8. } catch (Exception ex) {
  9. // handle the error
  10. }
  11. con=DriverManager.getConnection(connectieString);
  12. System.out.println ("Database connection established");

字符串
在运行应用程序时,确保类路径上有mysql-connector-java-5.x.x-bin.jar。

展开查看全部

相关问题