Java连接mysql详解&解决乱码
来源:互联网 发布:minecraft 源码 unity 编辑:程序博客网 时间:2024/05/21 09:29
解决java插入数据到数据库乱码问题
将原来的
jdbc:mysql://localhost:3306/YourDb
改为
jdbc:mysql://localhost:3306/YourDb?useUnicode=true&characterEncoding=UTF-8
做完以上工作后,插入到mysql的中文应该不会再是乱码了.
来自 <http://blog.csdn.net/fancylovejava/article/details/9229941>
1、加载JDBC驱动程序
在连接数据库之前,首先加载想要连接的数据库的驱动,即使数据库厂商提供的jar包,这通过java.lang.Class类的静态方法实现
Try{
Class.forName("com.mysql.jdbc.Driver");
System.out.println("成功加载驱动")
}catch(ClassNotFoundException e){
System.out.println("找不到驱动程序类,加载驱动失败")
e.printStackTrace();
}
成功加载后,会将Driver类的实例注册到DriverManager类中,在下一步,就可以直接调用类中的方法
2.创建数据库的连接
要连接数据库,需要向java.sql.DriverManager请求并获得Connection对象,
该对象就代表一个数据库的连接
使用DriverManager的getConnection(String url,String username,String password )
来获得路径,用户名,密码
String url="jdbc:mysql://localhost:3306/test";
String username="root";
String password="root";
try{
Connection con=DriverManager.getConnection(url,username,password);
System.out.println("数据库连接成功");
}catch(SQLExceptionse){
System.out.println("数据库连接失败");
se.printStackTrance();
}
也可以直接把用户名和密码附在url上
jdbc:mysql://localhost:3306/test?username=root&password=root;
3.创建一个Statement
要执行SQL语句,必须获得java.sql.Statement实例,Statement实例分为一下3种类型
(1)、执行静态SQL语句,通常通过Statement实例实现
(2)、执行动态sql语句,通常通过PreparedStatement实例实现
(当查询中的栏位,表或者条件等不确定,或者是变量时,就需要使用动态SQL,因为此时,无法写出静态的(也就是固定的)SQL)
(3)、执行数据库存储过程,通常通过CallableStatement实例实现
实现方式
【1】Statementstmt=con.createStatement();
【2】PrepareStatement pstmt=con.preparaedStatement(sql);
【3】CallableStatement cstmt=con.prepareCall("{CALLdemoSp(?,?)}");
4.执行SQL语句
Statement接口提供了三种执行SQL语句的方法:executeQuery、executeUpdate和execute
(1)、ResultSet executeQuery(String sqlString):执行查询数据库的SQL语句,返回一个结果集对象
(2)、int executeUpdate(String sqlString):用于执行INSERT、UPDATE或DELETE语句以及SQL
DDL语句,如:create table和drop table等
(3)、execute(sqlString)用于执行返回多个结果集、多个更新计数或二者组合的语句
具体实现代码
【1】ResultSetrs=stmt.executeQuery("SELECT * FROM …")
【2】introws=stmt.executeUpdate("Insert INTO…")
【3】booleanflag=stmt.execute(String sql);
5、处理结果
两种情况
1、执行更新返回的是本次操作影响到的记录数
2、执行查询返回的结果是一个ResultSet对象
具体实现代码
While(rs.next()){
String name=rs.getString("name");
String pass=rs.getString(1);
}
6、关闭JDBC对象
操作结束后要把所使用的JDBC独享全都关闭,以释放JDBC资源,关闭顺序和生命顺序相反
(1)关闭记录集
(2)关闭生命
(3)关闭连接对象
具体实现
If(rs!=null){
//关闭记录集
Try{
rs.close
}catch(SQLException e){
e.printStackTrance();
}
}
If(stmt!=null){
Try{
stmt.close
}catch(SQLException e){
e.printStackTrance();
}
}
If(con!=null){
Try{
con.close
}catch(SQLException e){
e.printStackTrance();
}
}
- Java连接mysql详解&解决乱码
- MySQL解决乱码详解
- java连接mysql乱码
- MySQL控制台连接乱码解决
- 解决.net连接mysql乱码
- 解决Java连接MySQL数据库,中文显示乱码问题
- Java连接MySQL乱码问题解决
- Java 连接mysql避免乱码
- JAVA连接MySQL出现乱码
- Java 连接mySql 中文乱码
- java连接mysql出现乱码
- java 连接mysql乱码问题
- java连接mysql出现乱码
- Java链接MySQL乱码解决
- mysql连接中的中文乱码的解决
- Ubuntu MyEclipse连接MySQL 乱码解决
- java utf-8编码连接utf-8 mysql数据库,解决中文乱码
- Linux上Java MySql连接的实现及中文乱码的解决
- ios开发去掉首位空格
- CentOS7安装Scrot
- html运用插件进行验证
- 开源框架android-times-square实现日历选择日期
- PHP面向对象编程--抽象类和方法
- Java连接mysql详解&解决乱码
- 网页视频代码
- android之notifyDataSetChanged失效
- Ubuntu VSFTP的配置方法
- JSP中 Session和作用域的使用
- LeetCode *** 168. Excel Sheet Column Title
- java中复制数组的几种方式
- 【剑指offer系列】 丑数___34
- interleaving string