Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么我会出错;未找到适合jdbc的驱动程序:h2:tcp://localhost/~/userManagement";?_Java_Servlets_Jdbc_Connection_H2 - Fatal编程技术网

Java 为什么我会出错;未找到适合jdbc的驱动程序:h2:tcp://localhost/~/userManagement";?

Java 为什么我会出错;未找到适合jdbc的驱动程序:h2:tcp://localhost/~/userManagement";?,java,servlets,jdbc,connection,h2,Java,Servlets,Jdbc,Connection,H2,我正在尝试获取jdbc连接,但由于某种原因,它抛出了一个错误,说“未找到驱动程序”。我使用的数据库是H2。代码如下: import com.userManagement.model.*; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.ArrayList; import

我正在尝试获取jdbc连接,但由于某种原因,它抛出了一个错误,说“未找到驱动程序”。我使用的数据库是H2。代码如下:

import com.userManagement.model.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import com.userManagement.model.User;



public class UserDao {

    private String jdbcUrl="jdbc:h2:tcp://localhost/~/userManagement";
    private String username="user";
    private String password="user";

    private static final String insertIntoUsers="insert into users"+"(name,address,age,email)values"+"(?,?,?,?);";
    private static final String selectUserById="select * from users where id=?";
    private static final String deleteUser="delete from users where id=?";
    private static final String updateUser="update * from users where id=?";
    private static final String selectAllUsers="select * from users";

//getting jdbc connection and returning it.
    protected Connection getConnection() {
        Connection con=null;
        try {
        con=DriverManager.getConnection(jdbcUrl, username, password);
        }
        catch(Exception e) {
            e.printStackTrace();
        }
        return con;
    }

    public void insertUser(User user) {
        try(Connection con=getConnection();
                PreparedStatement pst=con.prepareStatement(insertIntoUsers)){
            pst.setString(1, user.getName());
            pst.setString(2, user.getAddress());
            pst.setInt(1, user.getAge());
            pst.setString(1, user.getEmail());
            pst.executeUpdate();
        }
        catch(Exception e) {

        }
    }
    public User selectUser(int id) {
        User user=null;
        try(Connection con=getConnection();
                PreparedStatement pst=con.prepareStatement(selectUserById)){
            pst.setInt(1,id);
            ResultSet rs=pst.executeQuery();
            while(rs.next()) {
                String name=rs.getString("name");
                String address=rs.getString("address");
                int age=rs.getInt("age");
                String email=rs.getString("email");

            user=new User(name,address,age,email);
            }

        }
        catch(Exception e) {
            e.printStackTrace();
        }
        return user;
    }

    public List<User> selectAllUser(){

        List <User> users=new ArrayList<> ();
        try(Connection con=getConnection();
                PreparedStatement pst=con.prepareStatement(selectAllUsers);){
            ResultSet rs=pst.executeQuery();
            while(rs.next()) {
                String name=rs.getString("name");
                String address=rs.getString("address");
                int age=rs.getInt("age");
                String email=rs.getString("email");
                users.add(new User(name,address,age,email));
            }

        }
        catch(Exception e) {
            e.printStackTrace();
        }
        return users;
    }


    public boolean deleteUser(int id) {
        boolean rowDeleted=false;
        try(Connection con=getConnection();
                PreparedStatement pst=con.prepareStatement(deleteUser)){
            pst.setInt(1, id);
            rowDeleted=pst.executeUpdate()>0;

        }
        catch(Exception e) {
            e.printStackTrace();
        }
        return rowDeleted;
    }

    public boolean updateUser(User user) {
    boolean rowUpdated=false;
        try(Connection con=getConnection();
                PreparedStatement pst=con.prepareStatement(updateUser)){
            pst.setString(1,user.getName());
            pst.setString(2, user.getAddress());
            pst.setInt(2, user.getAge());
            pst.setString(2, user.getEmail());
            rowUpdated=pst.executeUpdate()>0;
        }
        catch(Exception e ) {
            e.printStackTrace();
        }
        return rowUpdated;
    }

}
导入com.userManagement.model.*;
导入java.sql.Connection;
导入java.sql.DriverManager;
导入java.sql.PreparedStatement;
导入java.sql.ResultSet;
导入java.util.ArrayList;
导入java.util.List;
导入com.userManagement.model.User;
公共类UserDao{
私有字符串jdbcUrl=“jdbc:h2:tcp://localhost/~/userManagement”;
私有字符串username=“user”;
私有字符串password=“user”;
private static final String insertIntoUsers=“插入用户”+(姓名、地址、年龄、电子邮件)值“+”(?,?,?,?);”;
私有静态最终字符串selectUserById=“select*from users,其中id=?”;
私有静态最终字符串deleteUser=“从id=?”的用户中删除”;
private static final String updateUser=“update*from users,其中id=?”;
私有静态最终字符串selectAllUsers=“select*from users”;
//获取jdbc连接并返回它。
受保护的连接getConnection(){
连接con=null;
试一试{
con=DriverManager.getConnection(jdbcUrl、用户名、密码);
}
捕获(例外e){
e、 printStackTrace();
}
返回con;
}
公共void插入器(用户){
try(Connection con=getConnection();
PreparedStatement pst=con.prepareStatement(插入用户)){
setString(1,user.getName());
setString(2,user.getAddress());
setInt(1,user.getAge());
setString(1,user.getEmail());
pst.executeUpdate();
}
捕获(例外e){
}
}
公共用户selectUser(int-id){
User=null;
try(Connection con=getConnection();
PreparedStatement pst=con.prepareStatement(selectUserById)){
pst.setInt(1,id);
ResultSet rs=pst.executeQuery();
while(rs.next()){
字符串名称=rs.getString(“名称”);
字符串地址=rs.getString(“地址”);
int age=rs.getInt(“年龄”);
String email=rs.getString(“电子邮件”);
用户=新用户(姓名、地址、年龄、电子邮件);
}
}
捕获(例外e){
e、 printStackTrace();
}
返回用户;
}
公共列表selectAllUser(){
List users=newarraylist();
try(Connection con=getConnection();
PreparedStatement pst=con.prepareStatement(selectAllUsers);){
ResultSet rs=pst.executeQuery();
while(rs.next()){
字符串名称=rs.getString(“名称”);
字符串地址=rs.getString(“地址”);
int age=rs.getInt(“年龄”);
String email=rs.getString(“电子邮件”);
添加(新用户(姓名、地址、年龄、电子邮件));
}
}
捕获(例外e){
e、 printStackTrace();
}
返回用户;
}
公共布尔删除用户(int-id){
布尔值rowdeled=false;
try(Connection con=getConnection();
PreparedStatement pst=con.prepareStatement(删除用户)){
pst.setInt(1,id);
rowDeleted=pst.executeUpdate()>0;
}
捕获(例外e){
e、 printStackTrace();
}
返回已删除的行;
}
公共布尔更新器(用户){
布尔值=false;
try(Connection con=getConnection();
PreparedStatement pst=con.prepareStatement(updateUser)){
setString(1,user.getName());
setString(2,user.getAddress());
setInt(2,user.getAge());
setString(2,user.getEmail());
RowUpdate=pst.executeUpdate()>0;
}
捕获(例外e){
e、 printStackTrace();
}
返回更新的行;
}
}

一个可能的原因可能与您的
类路径有关。你能确认你已经在你的类路径中包含了相关的驱动程序JAR吗?驱动程序在你的类路径上的哪里?根据位置的不同,您可能需要首先使用``Class.forName
显式加载驱动程序,因为自动加载驱动程序只适用于初始路径上的驱动程序。请注意,在web应用程序中,通常不应直接使用
DriverManager.getConnection`,而应使用连接池支持的数据源(例如Tomcat中内置的数据源、HikariCP或其他数据源)。