1,MySql语句
1,mysql语句
建库
show databases;
create database jyuser; (database不用复数)
use jyuser;
建表(第一个参数为字段名,第二个参数为字段类型,不用加单引号傻狗)
create table usertable(username varchar(20),password varchar(20));
//查看表结构
desc usertable;
增删改查(菜狗,增删改都需要指定表名,没有表名,你弄个毛线啊)
insert into usertable values('55555','55');
delete from usertable where username=’55555’;
update usertable set password=’666’ where username=’555’;
select * from usertable;
其他的语句
查看字符集
show variables like 'character%';
设置字符集
set character_set_database=utf8;
set names gbk;
2,模糊查询
Sql语句提供了like操作符用于模糊查询,可使用%来代替多个字符 用_下划线代替一个字符
格式 select * from 表名where 列名 like ‘x%’
select * from student where name like '谢%'
当需要使用数据库里面类型为varchar类型的数据时,用单引号括起来
代码如下,,封装了三个方法 1,得到连接的方法,2,发送查询语句的方法(返回的结果集)3,发送增删改语句的方法 以及如何用条件循环遍历结果集的数据
package util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class SQL {
//得到连接的方法
public static Connection getConn() throws Exception {
//1,加载数据库驱动(需要先将库导入进来)
Class.forName("com.mysql.jdbc.Driver");
//2,获取连接对象
String url = "jdbc:mysql://localhost:3306/7_2";//url的格式: 协议:哪种数据库://ip地址:端口号/数据库库名
String user="root";
String password = "123";
Connection connection = DriverManager.getConnection(url, user, password);
return connection;
}
//发送修改sql语句的方法
public static void sendSQL(Connection conn,String sql) throws SQLException {
//创建发送sql语句指令的对象statement
Statement statement = conn.createStatement();
//执行sql语句
statement.execute(sql);
}
//发送查询语句的方法
public static ResultSet sendQuerySQL(Connection conn,String sql) throws SQLException {
//创建发送sql语句指令的对象statement
Statement statement = conn.createStatement();
//执行sql语句
ResultSet resultSet = statement.executeQuery(sql);
return resultSet;
}
public static void main(String[] args) throws Exception {
SQL sql = new SQL();
Connection conn = sql.getConn();
//添加数据
String string = "insert into student values('3','谢万杰','男','1998-07-03');";
sql.sendSQL(conn, string);
System.out.println("添加成功");
//查询数据
ResultSet resultSet = sql.sendQuerySQL(conn, "select * from student where name like '谢%'");
//用条件循环遍历结果集
//如果当前语句不是最后一条则进入循环
while (resultSet.next()) {
getString用两种重载方式
//getString(String columnLabel) 以 Java 编程语言中 String 的形式获取此 ResultSet 对象的当前行中指定列的值。
// getString(int columnIndex) 以 Java 编程语言中 String 的形式获取此 ResultSet 对象的当前行中指定列的值。
String id = resultSet.getString("id");
String name = resultSet.getString("name");
String sex = resultSet.getString("sex");
String birthday = resultSet.getString("birthday");
System.out.println("id "+id+" name "+name+" sex "+sex+" birthday "+ birthday);
}
}
}
3,预处理语句
存在的意义,优化计算机性能
如何实现, 用连接对象connection的preparedStatement(String sql)方法进行预处理
进行预处理时可以使用通配符?代替任何字段
在进行预处理语句前,必须用相应的方法来设置通配符的值
setInt
void setInt(int parameterIndex,
int x)
throws SQLException
将指定参数设置为给定 Java int 值。在将此值发送到数据库时,驱动程序将它转换成一个 SQL INTEGER 值。
第一个参数的意思是从第几个通配符开始(下标从一开始),第二个参数是设置通配符的值
预处理的作用,使用预处理可使应用程序更容易动态地改变SQL语句中关于字段值条件的设定
代码如下
String sql = "select * from student where id = ?";
PreparedStatement statement = conn.prepareStatement(sql);
// 设置通配符的值
statement.setString(1, "2");
// 执行查询语句
ResultSet resultSet = statement.executeQuery();
预处理的终极意义,先使用通配符编写好sql语句,设置值,就不需要在执行的时候在设定sql语句了,虽然麻烦了点,但是提高了计算机的性能
如图所示
Api对方法的描述
executeQuery
ResultSet executeQuery()
throws SQLException
在此 PreparedStatement 对象中执行 SQL 查询,并返回该查询生成的 ResultSet 对象。
返回:
包含该查询生成的数据的 ResultSet 对象;不会返回 null
抛出:
SQLException - 如果发生数据库访问错误,在关闭的 PreparedStatement 上调用此方法,或者 SQL 语句没有返回 ResultSet 对象
executeUpdate
int executeUpdate()
throws SQLException
在此 PreparedStatement 对象中执行 SQL 语句,该语句必须是一个 SQL 数据操作语言(Data Manipulation Language,DML)语句,比如 INSERT、UPDATE 或 DELETE 语句;或者是无返回内容的 SQL 语句,比如 DDL 语句。
返回:
(1) SQL 数据操作语言 (DML) 语句的行数 (2) 对于无返回内容的 SQL 语句,返回 0