JDBC连数据库及对数据库的CRUD操作

本文介绍了使用Java JDBC连接数据库的步骤,包括准备4个字符串参数,加载数据库驱动,建立数据库连接。同时,文章详细讲解了通过JDBC进行数据库的增删改查(CRUD)操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JDBC连接数据库:

安装驱动的过程网上有较多文章可以参考。 驱动安装好之后:

步骤:

1.准备4个字符串

 连接数据库需要4个字符串,以mysql 为例:

1.driverClass:  com.mysql.jdbc.Driver

2.jdbcUrl: jdbc:mysql://localhost:3306/sb(最后一个代表你的数据库)

3.user:你的数据库账号

4.password:你的数据库密码

有两种方式:一种是硬编码的方式,即直接在代码里输入这4个字符串:

String driverClass="com.mysql.jdbc.Driver";
		String jdbcURL="jdbc:mysql://localhost:3306/sb";
		String user="root";
		String password="abc123456";
   还有一种就是采用配置文件的方式:jdbc.properties,然后读取该配置文件具体怎么读,另外一篇博客具体有写;

Properties p=new Properties();
	InputStream ins=this.getClass().getClassLoader()
			.getResourceAsStream("jdbc.properties");
	p.load(ins);
	driverClass=p.getProperty("driver");
	jdbcURL=p.getProperty("jdbcUrl");
	user=p.getProperty("user");
	password=p.getProperty("password");

2.加载驱动:

Class.forName(driverClass);

3.建立与数据库的连接:

一个connection代表一个数据库连接,可以调用DriverManager的getConnection()方法建立与数据库的连接,DriverManager是驱动管理类,传入的jdbcURL,user,password不一样,建立的连接就不一样,很方便。
Connection connection= DriverManager.getConnection(jdbcURL,user,password);
     好,建立好连接之后,就说明咱们已经完成了第一步,这时候你可以输出connection一下.
整段代码:
<span style="white-space:pre">	</span>String driverClass=null;
		String jdbcURL=null;
		String user=null;
		String password=null;
		
		Properties p=new Properties();
		InputStream ins=this.getClass().getClassLoader()
				.getResourceAsStream("jdbc.properties");
		p.load(ins);
		driverClass=p.getProperty("driver");
		jdbcURL=p.getProperty("jdbcUrl");
		user=p.getProperty("user");
		password=p.getProperty("password");
		
		//2.加载数据库驱动
		Class.forName(driverClass);
		
		//3.获取数据库连接
		Connection connection= DriverManager.getConnection(jdbcURL,user,password);<pre name="code" class="java"><span style="white-space:pre">		System.out.println(connection);


但离咱们的CRUD操作还差几步:

JDBC的CRUD操作:

首先,获取preparedStatement,调用其executeQuery()方法进行select 或者executeUpdate()方法进行insert,update,delete操作。这里要注意的是,查找操作和另外3种操作调用的方法不一样。

insert,ipdate,delete的操作:

获取preparedStatement对象:
String sql="INSERT INTO customer (NAME,email,birth) values('daming','1000@qq.com','2015-04-10')";<pre name="code" class="java">preparedStatement=connection.prepareStatement(sql);//需要传入sql语句<pre name="code" class="java">preparedStatement.executeUpdate();//执行前面输入的sql语句



  
   这里要注意的是,在执行executeUpdate()方法的时候,不需要再次传入sql语句。执行完之后,就可以在你的数据库的表中看到多了一条数据。
update和delete操作和insert一样。具体的sql语句就需要大家自己去学数据库了。
当然,其实还有另外一种用法:获取statement,调用其executeQuery()方法或者executeUpdate()方法insert,update,delete操作。
<span style="white-space:pre">		</span>statement=connection.createStatement();
			statement.executeUpdate(sql);
不一样的地方就是这里的statement执行executeUpdate方法的时候,需要传入sql语句。但statement有其局限性,即如果我们要写一个通用点的插入方法,即name和Email都靠键盘输入,如果继续用statement的话,其SQL语句:
Scanner scanner=new Scanner(System.in);
			String name=scanner.next();
			String email=scanner.next();
			sql="insert into customer (name,email) values"+
			"('"+name+"','"+email+"')";
如果插入的属性值很多的话,靠拼接sql语句将很复杂,容易出错,且容易sql注入。
此时,preparedStatement就发挥了它的长处:它可以用占位符来替代那些属性值,然后用setXxx方法来输入那些值。代码如下:
<span style="white-space:pre">			</span>String sql="INSERT INTO customer (NAME,email,birth) values(?,?,?)";
			preparedStatement=connection.prepareStatement(sql);
			preparedStatement.setString(1, "zhanglei");//替代占位符
			preparedStatement.setString(2, "21321@qq.com");
			preparedStatement.setDate(3, new Date(new java.util.Date().getTime()) );//sqlDate创建过程
			preparedStatement.executeUpdate();
 这样看去是不是方便多了呢,而且也能避免简单的sql注入。

查询操作

对于查询操作,需要得到resultSet, 字面意思就是结果集。调用preparedStatement.executeQuery()将返回一个ResultSet集合。
/*
	 * resultSet :封装了使用JDBC进行查询的结果
	 * 1.调用preparedStatement 对象的executeQuery() 
	 * 	返回的实际上就是一张数据表。有一个指针指向数据表的第一样的前面
	 * 可以调用next()方法检测下一行是否有效,若有效,返回TRUE,且指针下移,相当于
	 *  Iterator 对象 hasNext()和next方法的结合体
	 *  当指针定位到一行时,可以通过调用getXxx(index)或getXxx(columnName)
	 *  获取每一列的值,例如getInt(1),getString("name")
	 *  ResultSet也需要关闭
	 * */

String sql="select name,email,birth from customer where id = ?";<pre name="code" class="java">preparedStatement=connection.prepareStatement(sql);<pre name="code" class="java">preparedStatement.setInt(1, 7);//1表示第一个问号,7表示id=7<pre name="code" class="java">rs=preparedStatement.executeQuery();//获取resultset集<pre name="code" class="java">//4.处理ResultSet<pre name="code" class="java">if(rs.next()){//表示如果集合还有下一行<pre name="code" class="java">int id=rs.getInt(1);//第一列
		String name=rs.getString("name");//得到name列对应的值,name 表示列名
		String email=rs.getString("email");
		Date birth=rs.getDate(4);
		
		System.out.println(id);
		System.out.println(name);
		System.out.println(email);
		System.out.println(birth);
	
	}








简单来说,CRUD操作就差不多是以上这些了。需要注意的是,connection,preparedStatement和resultSet在用完之后都需要关闭,调用其.close()方法即可。
总结一下:1.先得到connection:调用DriverManager.getConnection(String url,String user,String password);
  2.得到preparedStatement,在这里需要注意的是,在得到它的同时,就需要传入SQL语句:
preparedStatement=connection.prepareStatement(sql);

  3.如果是查询操作,就需要调用prepared.executeQuery()方法得到resultSet:
rs=	preparedStatement.executeQuery();//获取resultset集<pre name="code" class="java">//4.处理ResultSet
	if(rs.next()){
		int id=rs.getInt(1);
		String name=rs.getString("name");
		String email=rs.getString("email");
		Date birth=rs.getDate(4);
		
		System.out.println(id);
		System.out.println(name);
		System.out.println(email);
		System.out.println(birth);
	
	}








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值