数据库

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,预处理语句

存在的意义,优化计算机性能

如何实现,  用连接对象connectionpreparedStatement(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)语句,比如 INSERTUPDATE  DELETE 语句;或者是无返回内容的 SQL 语句,比如 DDL 语句。

返回: 

(1) SQL 数据操作语言 (DML) 语句的行数 (2) 对于无返回内容的 SQL 语句,返回 0

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值