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类中,在下一步,就可以直接调用类中的方法 | |||
要连接数据库,需要向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){ | //关闭记录集 |
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泛型总结
- Struts2通用标签学习
- Struts2中result的type属性;值栈
- Java基础知识:equals;有参无参
- 20145337 《Java程序设计》第六周学习总结
- java中super和this的用法
- java -verbose命令
- LeetCode(java)5. Longest Palindromic Substring
- JavaWeb总结(三)—JSP
- 蓝桥杯java -身份证号码升级
- 关于Java流的方式将数据写入到文件中
- 删除原先的java导致在eclipse中tools.jar找不到
- android Studio 设置快捷键Alt+/联想,跟eclipse一样
- eclipse_ndk配置详解
- IntelliJ IDEA创建Web SpringMVC项目(二):添加springMVC框架
- Eclipse 导入安卓项目 No projects are found to import解决方案
- 20145208实验一 Java开发环境的熟悉
- IntelliJ IDEA创建Web SpringMVC项目(一):创建Maven Web项目
- eclipse注释乱码
- java中Pattern类