当前位置:   article > 正文

java —— MySQL 操作_java 操作mysql

java 操作mysql

一、常用 MySQL 语句

(一)创建数据库

 create database 数据库名;

例如:创建一个名为 hello 的数据库

create database hello;

 注:如果起初没有任何数据库,那么在建立连接的时候,地址 String address="jdbc:mysql://localhost:3306/数据库名?useSSL=false&serverTimezone=UTC"; 里蓝色数据库的位置可以省略。等待数据库建立之后,再将其补上,即可建立与该数据库的连接。

(二)创建表

create table 表名 (第一列名称  第一列类型,第二列名称  第二列类型……);

例如:创建一个名为 user 的表,表内三列,分别是 int 类型的 id,varchar(10)类型的 username 和 varchar(10)类型的 userpassword

create table User (id int,username varchar(10),userpassword varchar(10));

(三)给表添加列

 alter table 表名 add 列名 列类型;

例如:给 user 表添加一个 varchar(10) 类型的 phoneNumber 列

alter table user add phoneNumber varchar(10);

(四)添加行数据

 insert into 表名 (列名1,列名2……) values (值1,值2……);

例如:给 user 表添加 id 为 7,username 为 Tom,userpassword 为 123 的一行数据

insert into user (id,username,userpassword) values (7,"Tom","123");

(五)更新数据

 update 表名 set 列名1=值1,列名2=值2…… where 条件;

例如:把 user 表中第 7 行的 username 改为 Jerry,userpassword 改为 258

update user set username="Jerry",userpassword="258" where id=7;

(六)删除整行数据

 delete from 表名 where 条件;

例如:删除 user 表中 id 为 7 的一行

delete from user where id=7;

(七)删除表

 drop table 表名;

例如:删除 user 表

drop table user;

(八)删除数据库

drop database 数据库名;

例如:删除 hello 数据库

drop database hello;

(九)查询

 ① 查询所有

select * from 表名;

例如:查询 user 表的所有数据

select * from user;

② 有条件查询

 select 列名1,列名2  from 表名 where 条件;

例如:查询 user 表中 id 为 7 的 username 和userpassword

select username,userpassword from user where id=7;

二、Statement

Statement 是建立在 java 与 MySQL 连接上的一个接口,用以执行 MySQL 语句。

(一).execute(sql语句)

返回一个布尔值,true 表示此次操作产生了一个结果集,false 表示此次操作没有产生结果集。

  1. Statement stm=conn.createStatement();
  2. boolean x=stm.execute("update user set username='Jerry',userpassword='258' where id=7;");
  3. boolean y=stm.execute("select * from user");

本案例中,x 等于 false,没有产生结果集;y 等于 true,产生了结果集。 

(二).executeUpdate(sql语句)

返回一个int型数值,表示受影响的行数。

  1. Statement stm=conn.createStatement();
  2. int x=stm.executeUpdate("update user set username='Jerry',userpassword='258' where id=7;");

本案例中,x 等于 1,表示该操作只影响了 1 行。 

(三).executeBatch()

返回一个int型数组,内容不是 0 就是 1,前者表示执行失败,后者表示执行成功。该方法需要配合 .addBatch(sql语句) 使用。

  1. Statement stm=conn.createStatement();
  2. stm.addBatch("update user set username='Jerry',userpassword='258' where id=7;");
  3. stm.addBatch("insert into user (id,username,userpassword) values (8,"Tom","147");");
  4. int[] xarr=stm.executeBatch();
  5. for(int x:xarr)
  6. {System.out.println(x);}

(四).executeQuery(sql语句)

返回一个 ResultSet 结果集。

  1. Statement stm=conn.createStatement();
  2. ResultSet rs=stm.executeQuery("select * from user;");

三、ResultSet 结果集

(一)移动游标

  1. Statement stm=conn.createStatement();
  2. ResultSet rs=stm.executeQuery("select * from user");
  3. rs.next(); //将游标移动至下一行
  4. rs.previous(); //将游标移动至上一行
  5. rs.first(); //将游标移动至第一行
  6. rs.last(); //将游标移动至最后一行
  7. rs.absolute(5) //将游标移动至第5行
  8. rs.relative(-2) //将游标向上移动2行

 默认游标指向第 0 行,所以即使结果集里只有一个数据,也要移动游标才能获得。

(二)获取值

  1. Statement stm=conn.createStatement();
  2. ResultSet rs=stm.executeQuery("select * from user");
  3. while(rs.next())
  4. {
  5. int id=rs.getInt("id"); //获取id值
  6. String name=rs.getString("username"); //获取username值
  7. String pwd=rs.getString("userpassword"); //获取userpassword值
  8. }
  9. //括号内的参数除了用列名之外,还可以用列索引,从1开始

(三)获取行号

  1. Statement stm=conn.createStatement();
  2. ResultSet rs=stm.executeQuery("select * from user");
  3. rs.next();
  4. int x=rs.getRow(); //获取行号,此时行号显然为 1

(四)获取列信息

  1. Statement stm=conn.createStatement();
  2. ResultSet rs = stm.executeQuery("select * from user;");
  3. ResultSetMetaData metaData = rs.getMetaData();
  4. //引入ResultSetMetaData,ResultSetMetaData是获取ResultSet对象元数据信息的接口
  5. int columnCount = metaData.getColumnCount(); //一共多少列
  6. for (int i = 1; i <= columnCount; i++)
  7. {
  8. String columnName = metaData.getColumnName(i); //获取第i列的列名
  9. String columnType = metaData.getColumnTypeName(i); //获取第i列的类型
  10. System.out.println("列名: " + columnName + ", 类型: " + columnType);
  11. }

(五)判断上次取值是否为空

  1. Statement stm=conn.createStatement();
  2. ResultSet rs = stm.executeQuery("select * from user;");
  3. rs.next();
  4. boolean x=rs.wasNull(); //判断上次取值是否是空

(六)关闭结果集

rs.close();          //关闭结果集并释放资源

四、在 java 中保存 MySQL 数据

① 建立一个对象类,表中每一行都是一个对象

  1. public class User {
  2. int id;
  3. String username;
  4. String userpassword;
  5. public User(int id,String username,String userpassword) {
  6. this.id=id;
  7. this.username=username;
  8. this.userpassword=userpassword;
  9. }
  10. public int getId() {
  11. return id;
  12. }
  13. public void setId(int id) {
  14. this.id = id;
  15. }
  16. public String getUsername() {
  17. return username;
  18. }
  19. public void setUsername(String username) {
  20. this.username = username;
  21. }
  22. public String getUserpassword() {
  23. return userpassword;
  24. }
  25. public void setUserpassword(String userpassword) {
  26. this.userpassword = userpassword;
  27. }
  28. }

② 声明一个该对象类型的 ArrayList 数组,并通过构造方法将每个对象实例化,然后用 ArrayList 的 .add() 方法将实例化后的对象添加进 ArrayList 数组

  1. import java.sql.Connection;
  2. import java.sql.ResultSet;
  3. import java.sql.SQLException;
  4. import java.sql.Statement;
  5. import java.util.ArrayList;
  6. public class Test {
  7. public static void main(String[] args) {
  8. Connection conn=GetConnection.getconnection();
  9. Statement stm=null; //声明一个空的statement对象
  10. ResultSet userset=null; //声明一个空的resultset对象
  11. try
  12. {
  13. stm=conn.createStatement();
  14. String sql="select * from userlogin";
  15. userset=stm.executeQuery(sql); //查询结果放入ResultSet结果集
  16. ArrayList<User> userlist=new ArrayList<User>(); //声明user型动态数组
  17. while(userset.next())
  18. {
  19. int id=userset.getInt(1);
  20. String username=userset.getString(2); //循环获取每一行的id、username、userpassword
  21. String userpassword=userset.getString(3);
  22. User u=new User(id,username,userpassword); //通过构造方法实例化每个对象
  23. userlist.add(u); //将对象挨个添加到动态数组中
  24. }
  25. for(User u:userlist)
  26. {
  27. System.out.print(u.getId()+"\t");
  28. System.out.print(u.getUsername()+"\t"); //遍历
  29. System.out.println(u.getUserpassword());
  30. }
  31. }
  32. catch (SQLException e)
  33. {
  34. e.printStackTrace();
  35. }
  36. finally
  37. {
  38. try
  39. {
  40. userset.close();
  41. stm.close(); //关闭statement接口
  42. conn.close(); //关闭conn连接
  43. }
  44. catch (SQLException e)
  45. {
  46. e.printStackTrace();
  47. }
  48. }
  49. }
  50. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/852718
推荐阅读
相关标签
  

闽ICP备14008679号