发表于: 2017-04-28 20:34:19
1 1379
今天完成的事情:
读取结果集的数据:
ResultSet就是一张二维的表格,它内部有一个“行光标”,光标默认的位置在“第一行上方”,我们可以调用rs对象的next()方法把“行光标”向下移动一行,当第一次调用next()方法时,“行光标”就到了第一行记录的位置,这时就可以使用ResultSet提供的getXXX(int col)方法来获取指定列的数据了:
rs.next();//光标移动到第一行
rs.getInt(1);//获取第一行第一列的数据
当你使用rs.getInt(1)方法时,你必须可以肯定第1列的数据类型就是int类型,如果你不能肯定,那么最好使用rs.getObject(1)。在ResultSet类中提供了一系列的getXXX()方法,比较常用的方法有:
Object getObject(int col)
String getString(int col)
int getInt(int col)
double getDouble(int col)
用JDBC操作数据库,实现增添改查功能,具体代码如下:
import java.sql.*;//导入所有sql包
public class demo {
public static void main(String[] args) throws Exception {
insert();//添加数据
update();//修改数据
delete();//删除数据
query();//查询记录并显示
}
JDBC操作步骤
1.注册驱动
2.获取连接
DriverManager.getConnection("url,username,password);
url由三部分组成,中间用冒号隔开
第一部分固定的jdbc
第二部分数据库厂商 mysql
第三部分由数据库服务器的ip地址localhost,端口号3306和database数据库名称组成
3.构造Sql语句
4.发送sql语句
5.执行sql语句
6.关闭资源刷新
//定义方法注册驱动,连接数据库
public static Connection getConnection() throws Exception{
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/jnshun";
return DriverManager.getConnection(url,"root","ysmh2008");
}
//定义方法对数据库进行插入操作 插入语句:insert into 表名 values(值1,值2,值3);
public static void insert() throws Exception{
Connection con = getConnection();
Statement stmt = con.createStatement();
String sql = "insert into lianxi values(10,'三哥',23)";
stmt.executeUpdate(sql);
System.out.println("插入成功!");
}
//定义方法对数据库进行修改操作 更改语句:update 表名 set 列名 = 新值 where 列名 = 行数;
public static void update() throws Exception{
Connection con = getConnection();
Statement semt = con.createStatement();
String sql = "UPDATE lianxi SET name = '四哥' where id = 3";
semt.executeUpdate(sql);
System.out.println("更改成功!");
}
//定义方法对数据库进行删除操作 删除语句:delete from 表名 where 要删除的行数;
public static void delete() throws Exception{
Connection con = getConnection();
Statement stmt = con.createStatement();
String sql = "delete from lianxi where id = 8";
stmt.executeUpdate(sql);
System.out.println("删除成功!");
}//定义方法对数据库进行查询操作 查询语句:select * from 表名;
public static void query() throws Exception{
Connection con = getConnection();
Statement stmt = con.createStatement();
String sql ="select * from lianxi";
ResultSet rs = stmt.executeQuery(sql);
while(rs.next()){
String id = rs.getString(1);
String name = rs.getString(2);
String age = rs.getString(3);
System.out.println(id+" "+name+" "+age);
}
}
明天计划的事情:
学习mybatis
遇到的问题: 在获取连接数据库时遇到SQLException异常 出现这个异常就是三个参数的问题,往往username和password一般不是出错,所以需要认真查看url是否打错
executeUpdate(String sql):执行更新操作(insert、update、delete等);
ResultSet executeQuery(String sql):执行查询操作,查询结果就是ResultSet;
通过JDBC操作数据库表时,记录中有中文,遇到乱码的问题。主要原因是字符编码(characterEncoding)不正确
MySQL的默认编码是Latin1,不支持中文,要支持中午需要把数据库的默认编码修改为gbk或者utf8。
查看数据库的编码方式命令为:
>show variables like 'character%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
从以上信息可知数据库的编码为latin1,需要修改为gbk或者是utf8; 其中:
character_set_client为客户端编码方式;
character_set_connection为建立连接使用的编码;
character_set_database数据库的编码;
character_set_results结果集的编码;
character_set_server数据库服务器的编码;
只要保证以上四个采用的编码方式一样,就不会出现乱码问题。
mac平台百度后得到方法http://www.jianshu.com/p/362ca4b4e412
连接数据库后控制输出警告
收获:
搞明白jdbc的几个核心类
评论