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 表示此次操作没有产生结果集。

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

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

(二).executeUpdate(sql语句)

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

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

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

(三).executeBatch()

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

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

(四).executeQuery(sql语句)

返回一个 ResultSet 结果集。

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

三、ResultSet 结果集

(一)移动游标

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

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

(二)获取值

Statement stm=conn.createStatement();
ResultSet rs=stm.executeQuery("select * from user");
while(rs.next())
{
int id=rs.getInt("id");                     //获取id值
String name=rs.getString("username");       //获取username值
String pwd=rs.getString("userpassword");    //获取userpassword值
}

//括号内的参数除了用列名之外,还可以用列索引,从1开始

(三)获取行号

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

(四)获取列信息

Statement stm=conn.createStatement();
ResultSet rs = stm.executeQuery("select * from user;");
ResultSetMetaData metaData = rs.getMetaData();
//引入ResultSetMetaData,ResultSetMetaData是获取ResultSet对象元数据信息的接口

int columnCount = metaData.getColumnCount();   //一共多少列

for (int i = 1; i <= columnCount; i++) 
{
   String columnName = metaData.getColumnName(i);        //获取第i列的列名
   String columnType = metaData.getColumnTypeName(i);    //获取第i列的类型
   System.out.println("列名: " + columnName + ", 类型: " + columnType);
}

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

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

(六)关闭结果集

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

四、在 java 中保存 MySQL 数据

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

public class User {

	int id;
	String username;
	String userpassword;
	
	public User(int id,String username,String userpassword) {
		this.id=id;
		this.username=username;
		this.userpassword=userpassword;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getUserpassword() {
		return userpassword;
	}

	public void setUserpassword(String userpassword) {
		this.userpassword = userpassword;
	}
}

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

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;

public class Test {

	public static void main(String[] args) {
		
		Connection conn=GetConnection.getconnection();
		Statement stm=null;                                //声明一个空的statement对象
		ResultSet userset=null;                            //声明一个空的resultset对象
		try 
		{
			stm=conn.createStatement();
			String sql="select * from userlogin";
			userset=stm.executeQuery(sql);                 //查询结果放入ResultSet结果集
			ArrayList<User> userlist=new ArrayList<User>();      //声明user型动态数组
			
			while(userset.next())
			{
			int id=userset.getInt(1);
			String username=userset.getString(2);   //循环获取每一行的id、username、userpassword
			String userpassword=userset.getString(3);
			
			User u=new User(id,username,userpassword);   //通过构造方法实例化每个对象
			userlist.add(u);				             //将对象挨个添加到动态数组中
			}
			
			for(User u:userlist)
			{
				System.out.print(u.getId()+"\t");
				System.out.print(u.getUsername()+"\t");      //遍历
				System.out.println(u.getUserpassword());
			}
		} 
		catch (SQLException e) 
		{
			e.printStackTrace();
		}
		finally
		{
			try 
			{
				userset.close();
				stm.close();                //关闭statement接口
				conn.close();               //关闭conn连接
			} 
			catch (SQLException e) 
			{
				e.printStackTrace();
			}
		}
	}
}

Java-MySQL城市管理软件是一款基于Java语言MySQL数据库的应用程序,旨在提供城市管理机构高效管理城市资源的解决方案。该软件集成了多种功能模块,包括人口管理、行政区划管理、公共设施管理等,帮助城市管理机构更好地规划、运营和管理城市。 首先,人口管理模块。该模块通过与MySQL数据库建立连接,实现对人口数据的录入、查询、统计等功能。可以方便地管理居民的基本信息,包括身份证号、姓名、性别、年龄等,并能够根据需求进行数据分析和统计,如按年龄段统计人口数量。 其次,行政区划管理模块。该模块利用MySQL数据库存储城市的行政区划数据,包括省、市、区县等信息。用户可以通过该模块快速获取特定区域的行政信息,并能够进行行政区划的查询、增加、修改等操作,使城市管理机构能够高效管理城市的行政区划变更。 再次,公共设施管理模块。该模块通过与MySQL数据库的交互,实现对公共设施的管理,如道路、桥梁、公园、医院等。用户可以通过该模块对公共设施进行添加、删除、修改等操作,以便更好地维护和管理城市的公共设施。 此外,该软件还具备用户管理、报表生成、数据备份等功能。用户管理模块允许城市管理机构管理员添加、删除和修改用户权限,确保数据的安全性。报表生成功能能够根据用户需求生成各类统计报表,如人口分布图、公共设施使用情况等。数据备份功能则利用MySQL的高可靠性和稳定性,定期对数据进行备份,以确保数据的可靠性和安全性。 总之,Java-MySQL城市管理软件通过利用Java编程语言MySQL数据库的优势,提供了一种高效、可靠的城市管理解决方案。它可以帮助城市管理机构实现对人口、行政区划和公共设施等数据的管理和统计分析,为城市规划和运营提供有力支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值