数据连接:JDBC+MySql

这几天上手练习了一下Mysql数据库的使用,但是要在JAVA项目中无法直接操纵Mysql数据库,操作Mysql数据库需要一个桥梁,今天练习的就是其中一个重要的桥梁,那就是JDBC(JAVA Data Base Connectivity),即JAVA数据库连接。使用JDBC从安装到使用包括这几个步骤:

     1、已经安装Eclipse、MySql,并且都可以正常使用

     2、下载eclipse的Mysql支持包,下载地址http://www.mysql.com/downloads/connector/j/,下载之后得到后缀名为.zip的文件,解压之后,将其中后缀名为.jar的文件导入到当前包中,具体方法为:选中当前包,右键->构建路径->配置构建路径->点击库栏->添加JAR文件。英文或者其他版本的eclipse添加方法大同小异。

     3、现在开始就可以真正在JAVA项目中使用Mysql了。首先看一下本次练习使用的数据表。


     4、第一步,在操作MySql中的数据之前,首先要获取与数据库的连接,这步操作是以下几个步骤的基础,其具体代码如下:

	//连接的获取,在操作之前必须先获取与数据库的连接
	private static Connection getConn(){
		String driver = "com.mysql.jdbc.Driver";
		String url = "jdbc:mysql://localhost:3306/first?characterEncoding=utf8&useSSL=true";
		String username = "root";
		String password = "root";
		Connection conn = null;
		try{
			Class.forName(driver);
			conn = (Connection) DriverManager.getConnection(url,username,password);		
		}catch(ClassNotFoundException e){
			e.printStackTrace();
		}catch(SQLException e){
			e.printStackTrace();
		}
		return conn;
	}
需要注意的是,在版本较新的eclipse中,必须在url中加上“?characterEncoding=utf8&useSSL=true”,否则会报错。

      5、插入新的数据,编写静态函数void insert(int id,String name,int age),传入参数最后插入到数据表student的最后面,注意,虽然数据表总共有三列(id int auto_increment primary key,name char(20),age int),但是传入的参数可以是1个,2个或者3个甚至是0个,这样做法结果就是id自增,其他的为空,在实际应用的时候可以使用函数的重载,来实现数据表中不同个数与类型的参数的数据项的插入。

insert(int id,String name,int age)的代码具体如下:

	//插入新的数据
	private static void insert(int id,String name,int age){
		Connection conn = getConn();
		//sql语句中,参数id,name,age这个三个参数可以为1个、2个或者3个
		String sql = "insert into student (id,name,age) values(?,?,?)";
		PreparedStatement ps;
		try{
			ps = conn.prepareStatement(sql);
			ps.setInt(1, id);
			ps.setString(2, name);
			ps.setInt(3, age);
			ps.executeUpdate();
			ps.close();
			conn.close();
			System.out.println("数据添加成功!");
		}catch (SQLException e){
			e.printStackTrace();
		}
	}
主函数代码如下:

	public static void main(String[] args){
	insert(6,"Cherry",100);
	}
函数执行之后数据表如下图所示:



6、修改数据项中的某列,编写静态函数void update(int id,String name)和void update(int id,int age),通过函数的重载实现。具体的代码如下:

	//修改数据项中的名字
	private static void update(int id,String name){
		Connection conn = getConn();
		//注意sql语句中的" ' "符号包围不可省略,不然会报错,但是id可包围也可不包围
		String sql = "update student set name ='" + name +"'where id= "+id;
		PreparedStatement ps;
		try{
			ps = conn.prepareStatement(sql);
			ps.executeUpdate();
			System.out.println("数据更改成功!");
			ps.close();
			conn.close();
		}catch(SQLException e){
			e.printStackTrace();
		}
	}
	
	//修改数据项中的年龄
	private static void update(int id,int age){
		Connection conn = getConn();
		//注意sql语句中的" ' "符号包围不可省略,不然会报错,但是id可包围也可不包围
		String sql = "update student set age='"+ age + "'where id ="+id;
		PreparedStatement ps;
		try{
			ps = conn.prepareStatement(sql);
			ps.executeUpdate();
			System.out.println("数据更改成功!");
			ps.close();
			conn.close();
		}catch (SQLException e){
			e.printStackTrace();
		}
	}
实现测试与上一步中的实现类似。

7、数据项的删除。编写静态函数void delete(int id),具体代码如下:

	 //删除指定数据项
	private static void delete(int id){
		Connection conn = getConn();
		String sql = "delete from student where id ='"+id +"'";
		PreparedStatement ps;
		try{
			ps = conn.prepareStatement(sql);
			ps.executeUpdate();
			System.out.println("数据删除成功!");
			ps.close();
			conn.close();
		}catch(SQLException e){
			e.printStackTrace();
		}
	}
8、指定数据项的查询并打印,编写函数void select(int id),具体代码如下:

	//查询指定数据项并打印
	private static void select(int id){
		Connection conn = getConn();
		String sql = "select * from student where id ='"+id+"'";
		PreparedStatement ps;
		try
		{
			ps = conn.prepareStatement(sql);
			ResultSet result = ps.executeQuery(sql);
			//注意使用之前一定要先写上.next()函数,最初光标指向第一行之前,所以需要先调用.next()方法,使其指向当前行,否则会报"Before start of result set"错误
			result.next();
			System.out.println(result.getInt("id"));
			System.out.println(result.getString("name"));
			System.out.println(result.getInt("age"));
			
			
		}catch(SQLException e){
			e.printStackTrace();
		}
	}
9、查询所有数据项并打印,编写函数void selectAll(),具体代码如下:

	//查询所有数据项并打印 
	private static void selectAll(){
		Connection conn = getConn();
		Statement st = null;
		String sql = "select * from student";
		try{
			st = conn.createStatement();
			ResultSet result = st.executeQuery(sql);
			while(result.next()){
				System.out.println(result.getInt("id")+"--"+result.getString("name")+"--"+result.getInt("age"));
			}
		}catch(SQLException e){
			e.printStackTrace();
		}
	}





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值