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

知乎关键词排名关键词优化一年多少钱

知乎关键词排名,关键词优化一年多少钱,做百度移动网站,wordpress做超链接目录 1. JDBC原理 2. 导入JDBC驱动包 3. 编写JDBC代码实现Insert 3.1 创建并初始化一个数据源 3.2 和数据库服务器建立连接 3.3 构造SQL语句 3.4 执行SQL语句 3.5 释放必要的资源 4. JDBC代码的优化 4.1 从控制台输入 4.2 避免SQL注入的SQL语句 5. 编写JDBC代码实现…目录 1. JDBC原理 2. 导入JDBC驱动包 3. 编写JDBC代码实现Insert 3.1 创建并初始化一个数据源 3.2 和数据库服务器建立连接 3.3 构造SQL语句 3.4 执行SQL语句 3.5 释放必要的资源 4. JDBC代码的优化 4.1 从控制台输入 4.2 避免SQL注入的SQL语句 5. 编写JDBC代码实现Select 1. JDBC原理 1. 各种数据库如MySQL、Oracle、SQLServer等在开始时会提供一组编程接口API API即application programming interface即代码层次上的提供的功能API往往是通过函数或类的形式来提供的。 2. 不同的数据库系统的API是不同的JDBC就是统一Java与数据库连接的一套规范的API 3.Java程序员如果想要进行数据库开发就需要在项目中导入对应数据库的驱动包才能编写代码。 4. 驱动包是数据库厂商提供的此处以MySQL为例获取方式有 1从MySQL官网获取现为Oracle官网的一个子网 2github 3maven中央仓库 注中央仓库可以理解为一个服务器托管了各种软件程序包maven就类似于应用商店通过应用商店就可以访问到应用程序包并进行下载 2. 导入JDBC驱动包 3. 编写JDBC代码实现Insert import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;import javax.sql.DataSource; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException;public class JDBCInsert {public static void main(String[] args) throws SQLException {// 1. 创建并初始化一个数据源DataSource dataSource new MysqlDataSource();// 把dataSource对象转为MysqlDataSource类型// setUrl是MysqlDataSource类的方法要调用需先将对象转为MysqlDataSource类型((MysqlDataSource)dataSource).setUrl(jdbc:mysql://127.0.0.1:3306/JDBCProgram?characterEncodingutf8useSSLfalse);((MysqlDataSource)dataSource).setUser(root);((MysqlDataSource)dataSource).setPassword(xxxxx);// 2. 和数据库服务器建立连接Connection connection dataSource.getConnection();// 3. 构造 SQL 语句String sql insert into student values(1, Mike);// 使用PreparedStatement对sql语句进行预编译PreparedStatement statement connection.prepareStatement(sql);// 4. 执行 SQL 语句int ret statement.executeUpdate();System.out.println(ret ret);// 5. 释放必要的资源statement.close();connection.close();} } 运行代码在idea控制台有 并在MySQL中查看Student表结果 mysql select* from student; ------------ | id | name | ------------ | 1 | Mike | ------------ 1 row in set (0.00 sec) 编写JDBC代码需要以下五个步骤 3.1 创建并初始化一个数据源 1数据源即数据的源头此处数据来源于数据库即此处要描述数据库服务器在哪里 数据库中使用DataSourse接口进行描述 2在创建并初始化一个数据源也可以无需向上转型向下转型直接使用MysqlDataSource MysqlDataSource dataSource new MysqlDataSource(); 只是在向上转型向下转型的写法比较流行二者均可使用 3URL即唯一资源定位符用于描述网络上某个资源所在的位置此处设置为 ((MysqlDataSource)dataSource).setUrl(jdbc:mysql://127.0.0.1:3306/JDBCProgram?characterEncodingutf8useSSLfalse); ① jdbc是固定的mysql为连接的哪一个库 ② 127.0.0.1为本地回环地址表示本主机 ③ 3306为数据库服务器默认端口号标记某一主机上的进程 ④ JDBCProgram为数据库名自行创建 ⑤ characterEncodingutf8useSSLfalse分别表示字符集为utf8和不加密SSL是一个加密协议 3除设置URL之外还需设置User和Passward才能访问数据库服务器用户名默认为root密码为安装数据库时的密码 4经过第一步后只是描述了数据库的位置与用户名、密码等还没有进行连接 3.2 和数据库服务器建立连接 1使用getConnection方法与数据库服务器建立连接并用Connection类型的变量来接受返回值注意选择第一个jdbc的Connection 2如果getConnection方法正常运行则连接建立成功如果连接建立失败会直接抛异常; 3.3 构造SQL语句 基于以下数据库与数据表 mysql use jdbcprogram Database changed mysql show tables; ----------------------- | Tables_in_jdbcprogram | ----------------------- | student | ----------------------- 1 row in set (0.00 sec)mysql desc student; ----------------------------------------------- | Field | Type | Null | Key | Default | Extra | ----------------------------------------------- | id | int(11) | YES | | NULL | | | name | varchar(20) | YES | | NULL | | ----------------------------------------------- 2 rows in set (0.00 sec) 1构造的SQL语句与在MySQL中构造的规定相同 2如果请求是个SQL字符串服务器是可以处理的。服务器就需要对SQL进行解析。 客户端数目庞大时会导致服务器压力很大故而在客户端使用PreparedStatement对SQL语句进行预编译就可以减轻服务器的压力 3.4 执行SQL语句 1注意SQL语句的insert、delete和update操作都是使用executeUpdate方法进行执行的返回值是int类型数据表示影响的行数 2select操作使用的是executeQuery方法 3.5 释放必要的资源 1数据库的客户端与服务器进行通信时会消耗一定的系统资源如CPU、内存、硬盘、带宽等等。为了防止服务器同时处理多个客户端造成系统资源受限当客户端不使用服务器时就对资源进行释放 2语句与连接均需要释放需要先释放语句再释放连接。 释放的顺序与创建的顺序是相反的。 3除Datsource之外还有一种DriverManager的写法这种写法是通过反射的方式加载驱动包中的类进一步进行后续操作的。 但并不建议使用这种写法反射属于java开发的特殊手段其代码可读性非常差编译期难以对代码的正确性进行检查容易产生运行时异常建议不到万不得已不要使用反射 并且DataSource内置了数据库连接池可以复用连接提高连接服务器的效率 4. JDBC代码的优化 对于上文的JDBC代码要插入的数据是硬编码但是让用户编码是不现实的故而需要将数据通过其他方式供用户输入。 4.1 从控制台输入 import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;import javax.sql.DataSource; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; import java.util.Scanner;public class JDBCInsert {public static void main(String[] args) throws SQLException {Scanner scanner new Scanner(System.in);// 1. 创建并初始化一个数据源DataSource dataSource new MysqlDataSource();((MysqlDataSource)dataSource).setUrl(jdbc:mysql://127.0.0.1:3306/JDBCProgram?characterEncodingutf8useSSLfalse);((MysqlDataSource)dataSource).setUser(root);((MysqlDataSource)dataSource).setPassword(xxxxx);// 2. 和数据库服务器建立连接Connection connection dataSource.getConnection();// 3. 从控制台读取用户输入的内容System.out.println(请输入学生姓名);String name scanner.next();System.out.println(请输入学生学号);int id scanner.nextInt();// 4. 构造 SQL 语句String sql insert into student values( id , name );// 预编译PreparedStatement statement connection.prepareStatement(sql);// 5. 执行 SQL 语句int ret statement.executeUpdate();System.out.println(ret ret);// 6. 释放必要的资源statement.close();connection.close();} }运行代码在控制台输入一下信息  在mysql中查看Student表 mysql select* from student; ------------ | id | name | ------------ | 1 | Mike | | 2 | Mary | ------------ 2 rows in set (0.00 sec) 4.2 避免SQL注入的SQL语句 在上例代码中构造的SQL语句为 String sql insert into student values( id , name ); 如果用户输入的name形如王五);select* from ***导致看似一条SQL语句变为多个语句就会出现SQL注入问题如果再携带drop database之类的语句可能会对系统造成更大的伤害。 针对以上问题可以借助PreparedStatement的拼装功能实现 import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;import javax.sql.DataSource; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; import java.util.Scanner;public class JDBCInsert {public static void main(String[] args) throws SQLException {Scanner scanner new Scanner(System.in);// 1. 创建并初始化一个数据源DataSource dataSource new MysqlDataSource();// 把dataSource对象转为MysqlDataSource类型// setUrl是MysqlDataSource类的方法要调用需先将对象转为MysqlDataSource类型((MysqlDataSource)dataSource).setUrl(jdbc:mysql://127.0.0.1:3306/JDBCProgram?characterEncodingutf8useSSLfalse);((MysqlDataSource)dataSource).setUser(root);((MysqlDataSource)dataSource).setPassword(xxxxx);// 2. 和数据库服务器建立连接Connection connection dataSource.getConnection();// 3. 从控制台读取用户输入的内容System.out.println(请输入学生姓名);String name scanner.next();System.out.println(请输入学生学号);int id scanner.nextInt();// 4. 构造 SQL 语句String sql insert into student values(?, ?);// 使用PreparedStatement对sql语句进行预编译PreparedStatement statement connection.prepareStatement(sql);statement.setInt(1, id);statement.setString(2, name);// 打印statement需在拼接数据之后System.out.println(statement);// 5. 执行 SQL 语句int ret statement.executeUpdate();System.out.println(ret ret);// 6. 释放必要的资源statement.close();connection.close();} } 输入学生姓名与学号后控制台输出结果如下 在mysql中查看Student表 mysql select* from student; ------------ | id | name | ------------ | 1 | Mike | | 2 | Mary | | 3 | John | ------------ 3 rows in set (0.00 sec) 注1构造的SQL语句中的2个?是两个占位符statement.setInt与statement.setString方法就可以把占位符替换为指定的值 statement.setInt(1, id);statement.setString(2, name); 分别表示将第一个占位符替换为id的值第二个占位符替换为name的值当用户输入给id和name赋值后就会通过该方法自动替换 2可以使用打印statement的方法查看具体拼接情况需将该语句置于拼接数据之后 假如代码执行出错了也可以把statement打印出来查看具体语法是否出错 5. 编写JDBC代码实现Select import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;import javax.sql.DataSource; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException;public class JDBCSelect {public static void main(String[] args) throws SQLException {// 1. 创建并初始化数据源DataSource dataSource new MysqlDataSource();((MysqlDataSource)dataSource).setUrl(jdbc:mysql://127.0.0.1:3306/JDBCProgram?characterEncodingutf8useSSLfalse);((MysqlDataSource)dataSource).setUser(root);((MysqlDataSource)dataSource).setPassword(97805);// 2. 建立连接Connection connection dataSource.getConnection();// 3. 构造SQL语句String sql select* from Student;PreparedStatement statement connection.prepareStatement(sql);// 4. 执行SQL语句ResultSet resultSet statement.executeQuery();// 5. 遍历结果集合while(resultSet.next()){int id resultSet.getInt(id);String name resultSet.getString(name);System.out.println(id id , name name);}// 6. 释放资源resultSet.close();statement.close();connection.close();} }控制台输出结果为 注1执行SQL的语句为 ResultSet resultSet statement.executeQuery(); 对比SQL实现Insert的executeUpdate方法返回的是一个int类型数据实现Select的executeQuery方法返回的是一个ResultSet类型对象。 该对象可以视为是一张表初始时光标指向表首行可以使用getXXX方法获取当前光标指向的行的数据。每调用一次next就使光标下移一行当光标遍历完整张表再调用next时就会返回false 2getXXX方法用于取出这一行指定列的值使用的方法要与列的类型匹配 参数可以是第几列的下标也可以是列名更推荐使用列名 while(resultSet.next()){int id resultSet.getInt(id);String name resultSet.getString(name);System.out.println(id id , name name);} 3实现Select的程序在释放资源时相较于Insert需要多释放一个resultSet可以将查询结果的临时表视为一个resultSet
http://www.pierceye.com/news/860485/

相关文章:

  • 网站建网站建设网页微信头像logo在线制作
  • 微网站模板怎么做买了域名如何做网站
  • 新华美玉官方网站在线做维护一个网站要多少钱
  • 网站内容由什么组成部分网页网站设计价格
  • wordpress方框里面打勾两个域名同一个网站做优化
  • 个人怎么做公司网站闲置电脑做网站服务器
  • 有没有什么 网站能够做试卷wordpress写 a href
  • 西安 北郊网站建设网站上传图片加水印
  • 沈阳网站制作哪家好包头爱出行app最新版本
  • 怎么用IP做网站地址网站如何投放广告
  • 试述电子商务网站的建设流程太原建站的模板
  • 微信群投票网站怎么做的企业门户网站怎么做
  • 建网站平台 优帮云嘉兴营销型网站
  • 建筑类专业做教育的网站ui设计app
  • 郑州做营销型网站的公司什么叫社交电商平台
  • 外国做问卷可以赚钱的网站做中国菜的外国网站
  • 青岛市建设厅网站快递网站建设
  • 昆明网站WordPress文章怎么折叠
  • 拖拽建站系统源码企业主题展厅设计公司
  • asp.net网站的数据库配置张家港网站 设计制作
  • 聊城手机网站建设多少钱扬州网站建设哪个好薇
  • 云南安宁做网站的公司手机网页制作软件中文版
  • 如何做征信公司网站做谷歌推广一定要网站吗
  • 重庆市做网站的公司有哪些苏州网站建设设计公司
  • 网站制作计算机域名解析到网站
  • 自己做的电影网站打开很慢wordpress 防采集
  • 西安专业网站建设公司排名做网站编写
  • 做电影网站还能赚钱云南网站建设哪家公司好
  • 重庆定制网站开发什么是网络营销战略
  • 网站建设硬件方案精准客源app