JDBC简单连接MySQL

使用JAVA连接数据库的几个步骤

加载驱动类

DriverManager接口:JDBC的管理层,作用于用户和驱动程序之间,跟踪可用的驱动程序
并在数据库和相应的驱动程序间建立连接。
Class.forName(“com.mysql.cj.jdbc.Driver”)

建立连接对象(Connection)

连接对象内部包含了Socket对象,远程连接,比较耗时,Connection对象管理要点
为了提高效率,一般使用连接池来管理连接对象
需要用到的参数:url,登陆用户,登陆密码
Connction conn = DriverManager.getConnection(“jdbc:mysql://localhost:3306/数据库名?serverTimezone = GMT”,“root”,“gyx814930895”);

传入sql语句和设置参数

Statement—>(继承)PreParedStatement(带参数的sql语句) -->(继承)CallableStatement(调用存储过程)

1)Statement
.createStatement()来获得Statement对象
.execute(sql语句)执行语句,返回是否有结果集
.executeQuery()运行select语句,返回ResultSet结果集
.executeUpdate() 运行insert/update/delete操作,返回更新的行数
需要使用字符串拼接sql语句 易发生sql注入的危险:传入不规范的参数,会轻易的修改和删除表中数据

2)PreparedStatement 预处理,效率更高,防止sql注入
.prepareStatement(sql); 获得PreparedStatement对象,并用sql语句预处理,使用占位符
.set类型(索引,参数) 参数索引从1开始 可以直接使用setObject()
.execute() 执行操作 先传参后执行

PreparedStatement pStatement = conn.prepareStatement(“sql语句”);
PS:在sql语句中可以使用`?`,可暂时代替参数,通过传参来传入不同的值

获取返回值

更新语句一般使用:pStatement.executeUpdate(),返回改变行数
查询语句一般使用:Statement.executeQuery(),返回ResultSet对象

ResultSet对象接收返回值

ResultSet rSet = pStatement.executeQuery()
使用next()方法对rSet进行遍历
PS:rSet对象的第一位并未存放数据,必须先rSet.next(),再访问
提取数据:Obejct obj = rSet.getObject(index或column_name)

一些其它常用操作

事务管理

批处理
①Batch处理建议使用Statement,因为PrepareStatement预编译空间有限,当数据量大时,会发生异常
②事物操作默认改为false,不要自动提交 Connectinon.setAutoCommit(false);
Statement.addBatch(sql); //添加处理事件
Statement.exexuteBatch(); /执行批处理
Connectinon.commit();提交事务

CLOB(Character Large Object)和BLOB(BInary Large Object)

①CLOB:用于存储大量的文本数据,大字段以字符流的方式来处理
即setClob(索引,Reader流).getCharacterStream()获取输入流
tips:将字符串转换为byte数组,再借助byteArrayInputStream、InputStreamReader转为字符流
②BLOB:用于存储大量的二进制数据,大字段以字节流的方式来处理
即setClob(索引,InputStream流).getBinaryStream()获取输入流

DataBaseMetaData(数据库元数据)

DatabaseMetaData dbmd = conn.getMetaData();
①获取所有表(获取库中所有的表(数据库名、表架构、表名、类型(TABLE、VIEW))
PS:若不指定库名,会返回数据库中所有用户建立的表
ResultSet tableRet = dbmd.getTables(dbname, “%”, “%”, new String[] {“TABLE”});
②获取字段
ResultSet set = dbmd.getColumns(null, “%”, tableName, “%”);
set.getString(“COLUMN_NAME”) //获取列名
set.getString(“TYPE_NAME”)//获取列类型
③获取主键
ResultSet setPri = dbmd.getPrimaryKeys(null, “%”, tableName);

发布了82 篇原创文章 · 获赞 1 · 访问量 1486

猜你喜欢

转载自blog.csdn.net/qq_41891805/article/details/104523762
今日推荐