Java数据库的连接

在工作开发中,我们在做项目时,需要用到数据库,Java程序于数据哭连接方法有两种,一种是使用JDBC-ODBC桥接器于数据库连接,一种是用纯Java的JDBC驱动程序实现与数据库连接。

而今天我只讲解用纯Java的JDBC驱动程序实现数据库连接,因为我用的是eclipse,所以我用eclipse来讲解。

第一步、创建一个java项目,创建一个目录为lib的文件夹,然后把mysql数据库jar包放进去。

第二步、右键项目名,选择Build Path,再选择Configure build path

Connection对象

数据库连接工具类:

public class DBUtils {

	private static final String DRIVER="com.mysql.jdbc.Driver";
	private static final String URL="jdbc:mysql://localhost:3306/test";
	private static final String USERNAME="root";
	private static final String PASSWORD="root";
	private Connection connection=null;
	
	//获得数据库连接对象
	public Connection getConnection(){
		try {
			Class.forName(DRIVER);
			connection=DriverManager.getConnection(URL, USERNAME, PASSWORD);
		} catch (ClassNotFoundException | SQLException e) {
			e.printStackTrace();
		}
		return connection;
	}
}
测试类:
public class Test {

	public static void main(String[] args) {
		//创建数据库连接工具类对象
		DBUtils db=new DBUtils();
		//获得数据库连接对象con
		Connection con=db.getConnection();
		System.out.println("如果运行到这里没报错,就说明数据库连接上了");
	}
	
}

在运行之前,需要打开mysql的服务。
运行结果:

如果运行到这里没报错,就说明数据库连接上了

接下来,我们执行sql语句。

public class Test {

	public static void main(String[] args) throws SQLException {
		String sql="insert into testtable (id,name,pwd) values (10,'张三','123456')";
		//创建数据库连接工具类对象
		DBUtils db=new DBUtils();
		//获得数据库连接对象con
		Connection con=db.getConnection();
		//获得statement对象
		Statement st=con.createStatement();
		//执行sql语句,返回影响数据库数据的条数
		int result=st.executeUpdate(sql);
		//如果大于0,说明数据插入成功
		if(result>0){
			System.out.println("数据插入成功");
		}else{
			System.out.println("数据插入失败");
		}
	}
	
}

运行结果:

数据插入成功

看看数据库:

当然最后不要忘记关闭数据库对象,释放无用的资源。


PreparedStatement预编译

而这样的sql语句是写死了的,很多时候我们都需要从前端页面得到数据,然后拼接sql语句,再执行数据库操作。这时候可以使用PreparedStatement类(预编译处理类),这个类是Statement类的子类,重写了Statement类的主要方法。接下来,我们来看看如何使用这个类。

public class Test {

	public static void main(String[] args) throws SQLException {
		findTableById(10);
	}
	public static void findTableById(int id) throws SQLException{
		//sql语句中使用占位符
		String sql="select * from testtable where id=?";
		//创建数据库连接工具类对象
		DBUtils db=new DBUtils();
		//获得数据库连接对象con
		Connection con=db.getConnection();
		//对sql语句预编译处理
		PreparedStatement prs=con.prepareStatement(sql);
		//对sql语句中的占位符set值,下标从1开始算起
		prs.setInt(1, id);
		//执行sql语句,返回查询到的结果集
		ResultSet rs=prs.executeQuery();
		while(rs.next()){
			System.out.println("查询到的结果为:"+rs.getInt(1)+","+rs.getString(2)+","+rs.getString(3));
		}
		
	}
}

预编译处理类PrepareStatement,在sql语句中先用”?“来做占位符,然后下面从Connection中得到PreparedStatement对象对SQL语句进行预编译,然后set值,此时set值下标从1开始,然后接着执行sql语句。

运行结果:

查询到的结果为:10,张三,123456

结果集ResultSet类

ResultSet结果集是查询数据时使用的(select查询),查询到结果后,调用

//执行sql语句,返回查询到的结果集
ResultSet rs=prs.executeQuery();

这条语句返回结果集,最后用while语句来查询结果集中的所有数据。

ResultSet rs=prs.executeQuery();
while(rs.next()){
    System.out.println("查询到的结果为:"+rs.getInt(1)+","+rs.getString(2)+","+rs.getString(3));
}
同样,结果集中get数据也是下标从1开始。

猜你喜欢

转载自blog.csdn.net/xkfanhua/article/details/80600990