?serverTimezone=UTC//设置时区<The server time zone value '??-???? ???????é?′' is unrecognized or represents more than one time zone>
net stop mysql//mysql关闭指令
net start mysql//mysql开启数据库指令
java连接数据库使用JDBC
java.sql.,javax.sql.这两个包只是接口类
注册驱动
确定对岸目标
try {
Class.forName("com.mysql.cj.jdbc.Driver");
System.out.println("注册驱动成功!");
} catch (ClassNotFoundException e1) {
System.out.println("注册驱动失败!");
e1.printStackTrace();
}
String url="jdbc:mysql://localhost:3306/test?serverTimezone=UTC";
Connection conn = null;
//构建Java和数据库之间的桥梁:URL,用户名,密码
conn = DriverManager.getConnection(url, "root", "1234567");
Statement stmt = conn.createStatement();
System.out.println("创建Statement成功!");
ResultSet rs = stmt.executeQuery("select bookname from t_book order by bookid");
Statement stmt = conn.createStatement();
System.out.println("创建Statement成功!");
//执行SQL语句
int result = stmt.executeUpdate(sql);
Connection.close();//关闭
rs.close();//关闭结果集
stmt.close();//关闭语句
import java.sql.*;
public class SelectTest {
public static void main(String[] args){
//构建Java和数据库之间的桥梁介质
try{
Class.forName("com.mysql.cj.jdbc.Driver");
System.out.println("注册驱动成功!");
}catch(ClassNotFoundException e1){
System.out.println("注册驱动失败!");
e1.printStackTrace();
return;
}
String url="jdbc:mysql://localhost:3306/test?serverTimezone=UTC";
Connection conn = null;
try {
//构建Java和数据库之间的桥梁:URL,用户名,密码
conn = DriverManager.getConnection(url, "root", "1234567");
//构建数据库执行者
Statement stmt = conn.createStatement();
System.out.println("创建Statement成功!");
//执行SQL语句并返回结果到ResultSet
ResultSet rs = stmt.executeQuery("select bookid, bookname, price from t_book order by bookid");
//开始遍历ResultSet数据
while(rs.next())
{
System.out.println(rs.getInt(1) + "," + rs.getString(2) + "," + rs.getInt("price"));
}
rs.close();
stmt.close();
} catch (SQLException e){
e.printStackTrace();
}
finally
{
try
{
if(null != conn)
{
conn.close();
}
}
catch (SQLException e){
e.printStackTrace();
}
}
}
}
关闭自动提交,实现多语句同一事务
// 构建Java和数据库之间的桥梁:URL,用户名,密码
conn = DriverManager.getConnection(url, "root", "1234567");
conn.setAutoCommit(false);
insertBook(conn, "insert into t_book values(101, 'aaaa', 10)");
insertBook(conn, "insert into t_book values(102, 'bbbb', 10)");
insertBook(conn, "insert into t_book values(103, 'cccc', 10)");
Savepoint phase1 = conn.setSavepoint(); //设置一个保存点
insertBook(conn, "insert into t_book values(104, 'cccc', 10)");
insertBook(conn, "insert into t_book values(105, 'cccc', 10)");
conn.rollback(phase1); //回滚到phase1保存点,即上面2行无效
conn.commit();
PreparedStatement是Statement接口的子接口,其实现在JDBC驱动类中, 属于预处理操作,与直接使用Statement不同,PreparedStatement在操作时,是预先在数据表中准备好了一条SQL语句,但是此SQL语句的具体内容暂时不设置,而是之后在进行设置。
1:executeQuery():在此PreparedStatement对象中执行SQL语句,并返回该查询生成的ResultSet对象。
2:executeUpdate():在此PreparedStatement对象中执行SQL语句,该语句必须是一个SQL数据操作语言(Date Manipulation Language,DML)语句,比如insert、update、delete语句;或者是无返内容的SQL语句,比如DDL语句。
3:execute():在此PreparedStatement对象中执行SQL语句,该语句可以是任何种类的SQL语句。
4:getMetaData():获取包含有关ResultSet对象列信息的ResultSetMetaData对象,ResultSet对象将在此执行PreparedStatement对象时返回。
5:getParameterMetaData():获取此PreparedStatement对象的参数的编号、类型和属性。
注意:
//使用setstring()时字符串不用加单引号
/////////////////////////////////////数据库插入语句/////////////////////////////////
String sql = "insert into t_book(bookid,bookname,price) values(?,?,?)";
//构建数据库执行者
PreparedStatement pstmt = conn.prepareStatement(sql);
//执行SQL语句
int bookid = 10;
String bookName = "Effective Java";
int price = 50;
pstmt.setInt(1, bookid);
pstmt.setString(2, bookName);
pstmt.setInt(3, price);
int result = pstmt.executeUpdate();
////////////////////////////////////数据库模糊查询语句//////////////////////////////////////
String sql = " select * from mall where name like ? ";
PreparedStatement preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1,"%"+s+"%");
ResultSet resultSet = preparedStatement.executeQuery();
/////////////////////////////////////数据库查询语句//////////////////////////////////////////
String sql = " select * from mall where name =? ";
PreparedStatement preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1,s);
ResultSet resultSet = preparedStatement.executeQuery();
while (resultSet.next()){
Shopping shopping = new Shopping();
shopping.setId(resultSet.getInt(1));
shopping.setName(resultSet.getString(2));
shopping.setTime(resultSet.getString(3));
stringArrayList.add(shopping);
}
////////////////////////////////////数据库删除语句///////////////////////////////////////////
String sql = "" +
" delete from mall " +
" where id=? ";
PreparedStatement preparedStatement = connection.prepareStatement(sql);
preparedStatement.setInt(1,i);
preparedStatement.execute();
////////////////////////////////////数据库插入语句////////////////////////////////////////////
String sql = "" +
"insert into mall" +
"(id,name,time)" +
"values(?,?,?)";
PreparedStatement preparedStatement = connection.prepareStatement(sql);
preparedStatement.setInt(1,shop.getId());
preparedStatement.setString(2,shop.getName());
preparedStatement.setString(3,shop.getTime());
preparedStatement.execute();
/////////////////////////////////////数据库更新语句///////////////////////////////////////////
String sql = "" +
" update mall " +
" set name=?,time=? " +
" where id=? ";
PreparedStatement preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1,shop.getName());
preparedStatement.setString(2,shop.getTime());
preparedStatement.setInt(3,shop.getId());
preparedStatement.executeUpdate();
批量提交数据
//构建Java和数据库之间的桥梁:URL,用户名,密码
conn = DriverManager.getConnection(url, "root", "123456");
String sql = "insert into t_book(bookid,bookname,price) values(?,?,?)";
//构建数据库执行者
PreparedStatement pstmt = conn.prepareStatement(sql);
//执行SQL语句
String bookName = "aaaaaaaaaaaaaaaa";
int price = 50;
//values(1, 'Effective Java', 50)
for(int i=200;i<210;i++)
{
pstmt.setInt(1, i);
pstmt.setString(2, bookName);
pstmt.setInt(3, price);
pstmt.addBatch();
}
pstmt.executeBatch();
pstmt.close();
查询数据库时,返回的是一个二维的结果集,需要用到ResultSet来遍历结果集,获取每一行的数据。
ResultSet.next():ResultSet游标最初位于第一行之前,也就是第0行;第一个对方法的调用接下来使第1行成为当前行。
ResultSet.getString(columnlabel),或者getString(columnindex),可以传入返回结果集的序号顺序或者数据库列名
可以获取resultset返回的属性(如,每一行的名字类型),使用ResultSetMetaData解析ResultSet:
//构建Java和数据库之间的桥梁:URL,用户名,密码
conn = DriverManager.getConnection(url, "root", "123456");
//构建数据库执行者
Statement stmt = conn.createStatement();
System.out.println("创建Statement成功!");
//执行SQL语句并返回结果到ResultSet
ResultSet rs = stmt.executeQuery("select bookid, bookname, price from t_book order by bookid");
//获取结果集的元数据
ResultSetMetaData meta = rs.getMetaData();
int cols = meta.getColumnCount();
for(int i=1;i<=cols;i++)
{
System.out.println(meta.getColumnName(i) + "," + meta.getColumnTypeName(i));
}
rs.close();
stmt.close();
原文:https://www.cnblogs.com/innndown/p/12360653.html