您的位置:首页 > 编程语言 > Java开发

Java连接mysql详解&解决乱码

2016-04-10 19:40 381 查看
解决java插入数据到数据库乱码问题

将原来的

jdbc:mysql://localhost:3306/YourDb

改为

jdbc:mysql://localhost:3306/YourDb?useUnicode=true&characterEncoding=UTF-8
做完以上工作后,插入到mysql的中文应该不会再是乱码了.

来自 </article/2868026.html>

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】Statement
stmt=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();

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: