当前位置: 首页 > news >正文

做一个动态网站要多少钱打广告的免费软件

做一个动态网站要多少钱,打广告的免费软件,彩票网站的统计怎么做,wordpress中headcodeJDBC(重点) 数据库驱动 程序会通过数据库驱动,和数据库打交道。 sun公司为了简化开发人员对数据库的统一操作,提供了一个Java操作数据库的规范。这个规范由具体的厂商去完成。对应开发人员来说,只需要掌握JDBC接口。 熟悉java.sql与javax.s…

JDBC(重点)

数据库驱动

程序会通过数据库驱动,和数据库打交道。

sun公司为了简化开发人员对数据库的统一操作,提供了一个Java操作数据库的规范。这个规范由具体的厂商去完成。对应开发人员来说,只需要掌握JDBC接口。

熟悉java.sql与javax.sql包,导入一个数据库驱动包

1.在数据库中提前创建users表,准备连接jdbc

2.查询数据库版本,下载对应jar包。

3.将jar包导入项目。

4.导入jar后,需要添加到库里面。如下操作:

5.不需要更改信息,直接点击ok。

6.创建项目,连接数据库

  • 加载驱动
  • 提供用户信息与url
    • 连接地址+ssl连接关闭+字符集为utf-8+时区设置                
  • 连接数据库,DriverManager 
  • 执行SQL对象, Statement对象
  • 使用sql语言执行sql对象
  • 释放连接
//加载驱动Class.forName("com.mysql.cj.jdbc.Driver");//固定写法//用户信息和url,url基本格式如下://连接地址+ssl连接关闭+字符集为utf-8+时区设置String url="jdbc:mysql://localhost:3306/learndb?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8";String username="root";String password="123456";//连接成功,会返回数据库对象 Connection代表数据库Connection connection = DriverManager.getConnection(url, username, password);//执行SQL的对象 StatementStatement statement = connection.createStatement();//执行SQL的对象去执行SQl,可能存在结构,查看返回结果String sql="SELECT * from `users`";ResultSet resultSet = statement.executeQuery(sql);//返回的结果集,结果集中封装了我们全部的查询结果while (resultSet.next()){System.out.println("id="+resultSet.getObject("id"));System.out.println("name="+resultSet.getObject("name"));System.out.println("pwd="+resultSet.getObject("password"));System.out.println("email="+resultSet.getObject("email"));System.out.println("birth="+resultSet.getObject("birthday"));}//释放连接resultSet.close();statement.close();connection.close();}

JDBC对象分析

  • DriverManger

//加载驱动:法一:

DriverManager.registerDriver(new com.mysql.cj.jdbc.Driver());
//法二:

Class.forName("com.mysql.cj.jdbc.Driver");        //固定写法

//connection是数据库

//数据库设置为自动提交、事务提交、事务回滚

connection.rollback();
connection.commit();
connection.setAutoCommit();

  • URL

mysql默认 端口号为3306,url写法:

jdbc://mysql:/主机地址:端口号/数据库名?参数1&参数2¥参数3

String url="jdbc:mysql://localhost:3306/learndb?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8";

  • Statement  执行类,执行SQL的对象

//编写SQL

String sql="SELECT * from `users`";

//可执行的方法

statement.executeQuery();        //执行查询,返回一个结果集

statement.execute()        //执行任何SQL

statement.executeUpdate()        //执行更新、插入、删除,返回一个受影响的行数

  • ResultSet查询结果集,封装了所有的查询结果

获得指定的数据类型

resultSet.getObject();        //在不知道列类型的情况下使用

resultSet.getstring();        //如果知道列的类型就使用指定的类
resultSet.getInt();
resultSet.getFloat();
resultSet.getDate();
resultSet.getObject();

  • 遍历、指针

resultSet.beforeFirst();        //移动到最前面
resultSet.afterLast();        //移动到最后面
resultSet.next();                //移动到下一个数据
resultSet.previous();        //移动到前一行
resultSet.absolute();        //移动到指定行

  • 释放资源

resultSet.close();
statement.close();
connection.close();        //耗资源、用完即关

statement对象

jdbc中的statement对象用于向数据库发送SQL语句,想完成对数据库的增删查改,只需要通过这个对象想数据库发送增删改查语句即可。

Statement对象的executeUpdate方法,用于向数据库发送增、删、改的sql语句,executeUpdate执行完后,将回返回一个整数(即增删改语句导致了数据库几行是数据发生了变化)。

Statement.excuteQuery方法用于向数据库发送查询语句,executeQuery方法返回代表查询结果的ResultSet对象。

前提:

在src目录下创建资源文件,在该文件内部填写数据库用户信息与url等资源信息。

创建一个工具类,完成加载驱动、连接数据库、释放资源等作用。

//工具类
public class JdbcUtils {//提升作用域private static String driver=null;private static String url=null;private static String username=null;private static String password=null;static {try{//通过反射获得具体的资源。getResourceAsStream("db.properties")从该文件获得资源//读取信息InputStream in = JdbcUtils.class.getClassLoader().getResourceAsStream("db.properties");Properties properties = new Properties();properties.load(in);//获取具体的资源driver=properties.getProperty("driver");url=properties.getProperty("url");username=properties.getProperty("username");password=properties.getProperty("password");//驱动只用加载一次Class.forName(driver);} catch (Exception e) {e.printStackTrace();}}//获取连接的方法public static Connection getConnection() throws SQLException {return DriverManager.getConnection(url,username,password);}//释放连接资源的方法public static void release(Connection conn, Statement st, ResultSet rs){if (rs!=null){try {rs.close();} catch (SQLException throwables) {throwables.printStackTrace();}}if (st!=null){try {st.close();} catch (SQLException throwables) {throwables.printStackTrace();}}if (conn!=null){try {conn.close();} catch (SQLException throwables) {throwables.printStackTrace();}}}
}

代码详解

1.获取资源、加载驱动、连接数据库

增删改的方法:都用executeUpdate

插入数据

//插入数据
public class TestInsert {public static void main(String[] args) {//提升作用域Connection conn=null;Statement st=null;ResultSet rs=null;try {conn = JdbcUtils.getConnection();//获取数据库连接st=conn.createStatement();//获取sql的执行对象String sql="insert into `users`(`id`,`name`,`password`,`email`,`birthday`)" +"values(4,'serenity','123456','4563@qq.com','2020-01-01')";int i=st.executeUpdate(sql);//执行sql代码完成更新表,返回的结果为受影响的行数if (i>0){System.out.println("插入成功");}} catch (SQLException throwables) {throwables.printStackTrace();}finally {JdbcUtils.release(conn,st,rs);//调用工具类,释放资源}}
}

插入成功标志:

删除数据:

主要是更改sql代码

//删除数据
public class TestDelete {public static void main(String[] args) {//提升作用域Connection conn=null;Statement st=null;ResultSet rs=null;try {conn = JdbcUtils.getConnection();//获取数据库连接st=conn.createStatement();//获取sql的执行对象String sql="DELETE FROM users where id=4";int i=st.executeUpdate(sql);//执行sql代码完成更新表,返回的结果为受影响的行数if (i>0){System.out.println("删除成功");}} catch (SQLException throwables) {throwables.printStackTrace();}finally {JdbcUtils.release(conn,st,rs);//调用工具类,释放资源}}
}

更改数据

查看数据:利用executeQuery

PrepareStatement对象

PrepareStatement可以防止SQL注入,效率更好。把传递进来的参数当做字符

假设参数中存在转义字符,如引号,会被直接转义。

  • 新增

  • 删除

  • 更新

  • 查询

idea连接数据库

若未成功,可修改版本。

连接上数据库后

选择数据库后,可双击打开数据库表中查看信息。

事务

要么都成功,要么都失败

ACID原则

  • 原子性:要么全部完成,要么都不完成
  • 一致性:总数不变
  • 隔离性:多个进程互不干扰
  • 持久性:一旦提交不可逆,持久化到数据库

隔离性的问题:

脏读:一个事务读取另一个没有提交的事务

不可重复读:在同一个事务内,重复读取表中的数据,表数据发生了改变

虚读(幻读):在一个事务内,读取到了别人插入的数据,导致前后读出来结果不一致

前提:

模拟事务:A给B转账

public class TestTransation01 {public static void main(String[] args) {Connection conn=null;PreparedStatement st=null;ResultSet rs=null;try {//加载驱动conn= JdbcUtils.getConnection();//关闭数据库的自动提交,自动会开启事务conn.setAutoCommit(false);//开启事务//模拟A给B转账String sql1="update account set money=money-100 where name='A'";st=conn.prepareStatement(sql1);st.executeUpdate();String sql2="update account set money=money+100 where name='B'";st=conn.prepareStatement(sql2);st.executeUpdate();//业务完毕,提交事务conn.commit();System.out.println("成功!");} catch (SQLException throwables) {try {conn.rollback();//如果失败则回滚事务} catch (SQLException e) {e.printStackTrace();}throwables.printStackTrace();}finally {//释放资源JdbcUtils.release(conn,st,rs);}}
}

代码解释:

模拟事务A与B转账出现异常:

http://www.hrbkazy.com/news/37829.html

相关文章:

  • 做网站怎么查看来访ip北京网站制作设计
  • c++做网站互联网营销是什么
  • 突泉建设局三务公开网站百度网址大全手机版
  • 城子河网站建设百度入驻商家
  • 网网站设计网2345网址导航官网
  • 投资公司网站模板北京网站建设制作公司
  • 为什么做网站备案的人态度差品牌广告图片
  • 网站建设商城百度识图识别
  • 建设银行网站登录首页百度竞价ocpc投放策略
  • wordpress后台置顶关键词排名seo
  • 影视自助建站广州做seo公司
  • 网站栏目规划怎么写域名查询官网
  • 哪个网站可以免费制作h5鼓楼网页seo搜索引擎优化
  • 网站制作问题 图片版权公关公司排行榜
  • 如何做好网站内容优化微营销软件
  • 台州专业制作网站企业管理咨询
  • wordpress中文名烟台seo外包
  • 泉港做网站公司seo内链优化
  • 怎样给网站做下载百度搜索
  • wap手机网站慈溪seo
  • 国家企业信息系统公示系统下载seo网站优化技术
  • 效果好的网站建设seo型网站
  • 淘宝做的代码能在其他网站用吗市场营销方案怎么做
  • WordPress P站电商网站对比表格
  • 网站开发需要会什么苏州seo关键词优化报价
  • 公司商城网站建设seo工作内容
  • 如何做表白网站的教程香港旺道旺国际集团
  • 成都vr 网站开发网络营销的模式有哪些
  • 衡水哪里做网站网站网址查询工具
  • 招生就业网站开发详情爱站查询