一.增删改查 (CRUD) Create(创建) Retrieve(查询) Update(更新) Delete(删除)
- Create 增加
只需要传递SQL语句
下面的table是在mysql中创建的表名
String sql = "insert into table values(,,,,) ";
s.execute(sql); // 注: Statement s = c.createStatement(); Connection c = DriverManager.getConnection(数据库); - Delete 删除
String sql = "delete from table where id = 2"; //id是我给表加的参数
s.execute(sql); - Update 修改
String sql = "update table set name = 'name1' where id = 2 "; //name同上
s.execute(sql); - Retrieve 查询
比较特殊: String sql = "select * from table";
ResultSet rs = s.excuteQuery(sql);
然后用while遍历rs.next(); 注意获取数据时,rs.get(3) 获得的就是第三个,因为它是从1开始算的 - 查询数据是否匹配
String sql = "select * from user where name = '" + name +"' and password = '" + password+"'";
ResultSet rs = s.executeQuery(sql);
if(rs.next()) 里边的rs.next(),如果找到匹配数据,会返回true
如果没找到匹配数据,光标会在最后一行之后,会返回false - 获取语句总数
"select count(*)from table" 用executeQuery()执行后,用ResultSet rs 接收,再用while循环rs.next()获取rs.getInt(1)
二.PreparedStatement
- 根据sql语句来创建
String sql = "insert into table values(null,?,?,?)";
PreparedStatement ps = c.prepareStatement(sql); //放在try()的括号里边
{ 设置参数 ps.setxxxxx();}
三.execute 与 executeUpdate
- 都可以增删改 s.execute(sql) s.executeUpdate(sql)
- 前者可以执行查询语句,后者不可以执行
s.execute(sqlSelect); ResultSet rs = s.getResultSet(); 然后把数据get()出来 同 (一).5比较
s.executeUpdate(sqlUpdate) 返回值是int 类型, 代表受到影响数据的个数 用int num来接收,输出num
注:execute(sql)返回值是boolean类型的,返回true代表执行查询语句,返回false则代表执行增,删,改等语句。
四.使用事务
- 通过 c.setAutoCommit(false);关闭自动提交
s.execute(sql1);
s.execute(sql2); //sql1和sql2如果有一个提交失败,那就都失败
使用 c.commit();进行手动提交 -
MYSQL 表的类型必须是INNODB才支持事务(具体在我的Day02 MySQL初步)