JDBC连接并使用mysql数据库
来源:互联网 发布:男尊女卑 日本 知乎 编辑:程序博客网 时间:2024/06/14 10:18
数据库在开发过程中是非常容易使用到的,在java的开发中也有一套工具方便我们对于数据库的连接和操作,那就是jdbc。
jdbc是一套连接数据库的工具,在使用时,通常包括以下步骤:
- 加载数据库驱动程序——jdbc作为工具并不包含在jdk中,我们在使用前需要去加载该类
- 获取数据库连接对象——如同访问网站一样,我们需要建立与数据库的链接
- 构造sql语句——sql语句为字符串,如同在sql客户端执行的语句是相同的
- 构造Statement实例——Statement实例是sql语句的载体
- 执行sql语句——sql语句由数据库执行,需要通过Statement载体发送给数据库再去执行
- 关闭连接——关闭Statement实例连接,关闭数据库连接对象的连接
下面是一段数据库插入操作的源码:
/** * 插入操作 */ public static void insert(){ try { //加载数据库驱动程序 Class.forName(Driver); //获取数据库连接对象 Connection conn = DriverManager.getConnection(URL, USERNAME, PASSWD); //构造sql语句 String sql = " insert into person(name, age, description) values('测试', 20, '测试1');"; //构造statment实例(用来发送SQL语句的载体) Statement stat = conn.createStatement(); //执行sql语句(发送给数据库) int num = stat.executeUpdate(sql); System.out.println(num); //关闭连接 stat.close(); conn.close(); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } }
需要注意的是,在建立Mysql链接使用的URL中,为了防止字符集不匹配的情况,我们需要指定字符集,方式如下:
public final static String URL = "jdbc:mysql://localhost:3306/test?characterEncoding=utf-8";
其中localhost:3306为数据库服务器地址,test为要使用的数据库,在其之后的characterEncoding=utf-8是指定的字符集。
上面是一个简单的插入操作,插入的是一个纯粹的字符串组成的sql语句,在实际应用中,我们可能不能确定将要插入的字符,所以我们需要通过预先编译的sql语句将即将要执行的sql语句(不含字段值)存储起来,然后在执行前给预先编译好的sql语句进行设置值操作,如下,通过实现PreparedStatement接口进行操作:
package JdbcConnect;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.SQLException;/** * Created by zhuxinquan on 16-2-5. */public class PreparedStatementDemo { public final static String URL = "jdbc:mysql://localhost:3306/test?characterEncoding=utf-8"; public final static String USERNAME = "root"; public final static String PASSWD = "××××××××"; public final static String Driver = "com.mysql.jdbc.Driver"; public static void insert(Person p){ try { Class.forName(Driver); Connection conn = DriverManager.getConnection(URL, USERNAME, PASSWD); String sql = "insert into person(name, age, description) values(?, ?, ?)"; PreparedStatement ps = conn.prepareStatement(sql); //设置字段值 ps.setString(1, p.getName()); ps.setInt(2, p.getAge()); ps.setString(3, p.getDescription()); ps.executeUpdate(); ps.close(); conn.close(); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } } public static void main(String[] args) { Person p = new Person("测试3", 23, "ceshi 3"); insert(p); }}
在上面这段代码中并没有将字段的具体值写入字符串中,而是通过PreparedStatement类去设置之前通过通配符表示的字段值。进而去执行已经预编译好的sql语句。
更新操作完成后的sql语句返回影响的行数,而查询操作完成后返回的是ResultSet结果集,我们需要对其结果进行处理才能得到我们想要的结果,如下例就是一个简单的查询操作:
package JdbcConnect;import java.sql.*;/** * Created by zhuxinquan on 16-2-4. */public class JdbaQueryDemo { public final static String URL = "jdbc:mysql://localhost:3306/test?characterEncoding=utf-8"; public final static String USERNAME = "root"; public final static String PASSWD = "××××××××"; public final static String Driver = "com.mysql.jdbc.Driver"; public static void query(){ try { Class.forName(Driver); Connection conn = DriverManager.getConnection(URL, USERNAME, PASSWD); String sql = "select id, name, age, description from person"; Statement state = conn.createStatement(); //返回查询的结果集 ResultSet rs = state.executeQuery(sql); while (rs.next()){ int id = rs.getInt(1); System.out.println(id); } rs.close(); state.close(); conn.close(); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } } public static void main(String[] args) { query(); }}
同样当我们要查询的条件不确定时,我们也可以通过使用PreparedStatement接口利用通配符的方式,之后设置字段值实现预想的要求。
1 0
- JDBC连接并使用mysql数据库
- 使用JDBC连接MYSQL数据库
- 使用JDBC连接MYSQL数据库
- 使用JDBC连接mysql数据库
- 使用jdbc连接mysql数据库
- 使用JDBC连接MySQL数据库
- 使用 jdbc 连接 mysql 数据库
- 使用JDBC连接MySQL数据库
- 使用JDBC连接并操作数据库
- JDBC连接MySQL数据库并取出数据库中数据
- 使用JDBC连接MySQL数据库详解
- 使用JDBC连接MySQL数据库的过程
- 使用JDBC连接MySQL数据库查询实例
- Android使用JDBC连接mysql数据库
- 使用JDBC连接MySQL数据库详细步骤
- scala使用JDBC连接mysql数据库
- JAVA使用JDBC连接MySQL数据库
- JAVA使用JDBC连接MySQL数据库
- 创建及调用基于QT5 QML的 DLL(举例QML中使用QZXing识别二维码)
- poj_1458 Common Subsequence(最长公共子序列)
- 蓝桥杯-基础练习-特殊的数字
- 【VB】窗体透明一:窗体透明,控件不透明(穿过)
- 51nod(1264)——线段相交
- JDBC连接并使用mysql数据库
- NYOJ832 合并游戏 状压DP+记忆化搜索
- FTP 服务器(vsftpd)搭建鸟哥详细教材
- AbstractQueuedSynchronizer(AQS)
- char *p="%s"; printf(p);的问题
- Educational Codeforces Round 7--D. Optimal Number Permutation
- Linux进程间通信 -- mmap函数的使用
- 蓝桥杯-基础练习-回文数
- NodeJS Connect URL重写中间件组件