发表于: 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异常 出现这个异常就是三个参数的问题,往往usernamepassword一般不是出错,所以需要认真查看url是否打错

executeUpdate(String sql):执行更新操作(insertupdatedelete等);

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的几个核心类


返回列表 返回列表
评论

    分享到