一、JDBC概述

1.1 数据库驱动

  这里的驱动的概念和平时听到的那种驱动的概念是一样的,比如平时购买的声卡,网卡直接插到计算机上面是不能用的,必须要安装相应的驱动程序之后才能够使用声卡和网卡,同样道理,我们安装好数据库之后,我们的应用程序也是不能直接使用数据库的,必须要通过相应的数据库驱动程序,通过驱动程序去和数据库打交道,如下所示:

  aaarticlea/png;base64,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dsHlSwbGxt3d3dJGUurMj4yMfP311zNnzw7duqW2/zHukQWDZdCpDIaBsfG5c+emgMepYH5kZOTly5dBwcFWNjYbC/Iru+/jHmIwWBZcN9C/q7FhwfLlljNn9vT0TA2MU8T8yMgIk8ns6OhY4e+npq4+c+7c+YsWuXp7y5Qd3d2NzM21dHXnurjgfjHgqfTUp560ZIktab6mtvY8O7vDhw//+eefU0bi1DHP1ps3bz799NPLly+flxkdO3YsiEpVU1dfunZtcFKirr6+q5vbwYMH8b4ukNSFV+ovXLjQ2dn5n//8Z+oBxIF5mdLvv/9eWFSko6vrGRRU3Dr6re+qBz0rt2zR0tGJio7++uuv8b5GkFRE2NQTl/m3b9/W1NQYGhm5LF6cc/YM/1yr/M5t36goDU3NlNTUly9f4n29IImJ4KknIvPv379vamqaNXu2jZPTzvp64assJW3XvEKCdXR18wsK3rx5g/e1gyYlSP0I0ZhnMpm3bt1yIZHMra03H/ygfnAA4/pqXlMTieI9w9CQwWC8ffsW7/sAiS1IPVsEYn5gYID1o4um1ta0nekR9MwIemZ6Xa3wlBe2XGFtGUHPdF2+jHWEQ4cOvX//Hu8bAmEVpJ5TRGH+2rVrsbGxCIKEhoWtj45mGUEQdz9f4YlPKitDEIS9S2RUlKamZlBQUEVFxX//+1+8bwskWpB6HhGFeVRVVVVRVoeJTLxvQADeVwqSsIicemCeoIknuIicemCeoIknuIicemCeoIknuIicemCeoIknuIicemCeoIknuIicemCeoIknuIicemCeoIknuIicemCeoIknuIicemCeoIknuIicemCeoIknuIicemCeoIknuIicemCeoIknuIicemCeoIknuIicemCeoIknuIicemCeoIknuIicemCeoIknuIiceqIw/w5NFRUV3qtWiUz80uXLUXeX999IIogg9TwiCvPt7e0kEgnh0wI/P5GJ598LQZDKysq//voL79sCiRaknkdEYX5kZGR4eLihoWGGoeHMefNSjlYd7X1wtPcB41Gf8MTX9j9mbZnf3Ozu56ekpLRz166ff/4Z77sBiSFIPacIxDxLf//999GjRw0MDV0plLzzTcKzznLFvbv+MRu0tLWTU1L+7//+D+87AE1QkHqWCMc8S2/evMkvKNDR1V0cElLS1iYo5Ud7H4Ql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" alt="" />

1.2 什么是JDBC

  JDBC(Java DataBase Connectivity)就是Java数据库连接,说白了就是用Java语言来操作数据库。原来我们操作数据库是在控制台使用SQL语句来操作数据库,JDBC是用Java语言向数据库发送SQL语句。

1.3 JDBC原理

  早期SUN公司的天才们想编写一套可以连接天下所有数据库的API,但是当他们刚刚开始时就发现这是不可完成的任务,因为各个厂商的数据库服务器差异太大了。后来SUN开始与数据库厂商们讨论,最终得出的结论是,由SUN提供一套访问数据库的规范(就是一组接口),并提供连接数据库的协议标准,然后各个数据库厂商会遵循SUN的规范提供一套访问自己公司的数据库服务器的API出现。SUN提供的规范命名为JDBC,而各个厂商提供的,遵循了JDBC规范的,可以访问自己数据库的API被称之为驱动!

  JDBC是接口,而JDBC驱动才是接口的实现,没有驱动无法完成数据库连接!每个数据库厂商都有自己的驱动,用来连接自己公司的数据库。

  当然还有第三方公司专门为某一数据库提供驱动,这样的驱动往往不是开源免费的!

1.3 JDBC连接数据库

  第一步:导入mysql数据库的驱动jar包(mysql-connector-java-5.1.13-bin.jar)

  第二步:准备四大参数(driverClassName、url、username、password)

driverClassName:com.mysql.jdbc.Driver
url:URL用于标识数据库的位置,通过URL地址告诉JDBC程序连接哪个数据库,URL的写法为:
aaarticlea/png;base64,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" alt="" />

  常用数据库URL地址的写法:

  • Oracle写法:jdbc:oracle:thin:@localhost:1521:sid
  • SqlServer写法:jdbc:microsoft:sqlserver://localhost:1433; DatabaseName=sid
  • MySql写法:jdbc:mysql://localhost:3306/sid

  如果连接的是本地的Mysql数据库,并且连接使用的端口是3306,那么的url地址可以简写为: jdbc:mysql:///数据库

  第三步:获取连接

  • 加载驱动类:Class.forName("com.mysql.jdbc.Driver");
  • 获取Connection对象:Connection con = DriverManager.getConnection(url, username, password);

二、四大核心类

2.1 DriverManager

  JDBC程序中的DriverManager用于加载驱动,并创建与数据库的连接,这个API的常用方法:

  1. DriverManager.registerDriver(new Driver())
  2. DriverManager.getConnection(url, user, password),

  注意:在实际开发中并不推荐采用registerDriver方法注册驱动。原因有二:

  1、查看Driver的源代码可以看到,如果采用此种方式,会导致驱动程序注册两次(在我们执行DriverManager.registerDriver(new Driver()的时候,静态代码块也已经执行了,相当于是实例化了两个Driver对象),也就是在内存中会有两个Driver对象。

  2、这种方式会出现硬编码:代码依赖mysql的api,脱离mysql的jar包,程序将无法编译,如果将来想连接Oracle数据库,那么必须要修改代码的。

  推荐方式:Class.forName("com.mysql.jdbc.Driver");

  采用此种方式不会导致驱动对象在内存中重复出现,并且采用此种方式,程序仅仅只需要一个字符串,不需要依赖具体的驱动,使程序的灵活性更高。

  查看com.mysql.jdbc.Driver.java:

public class Driver extends NonRegisteringDriver implements java.sql.Driver {
static {
try {
java.sql.DriverManager.registerDriver(new Driver());
} catch (SQLException E) {
throw new RuntimeException("Can't register driver!");
}
}
……
}

  从上边可以看到,它是用静态代码块实现的。

  根据类加载机制,当执行 Class.forName(driverClass) 获取其Class对象时, com.mysql.jdbc.Driver 就会被JVM加载,连接,并进行初始化,初始化就会执行静态代码块,也就会执行下边这句代码:

 java.sql.DriverManager.registerDriver(new Driver());

  这就和第一种方式相同了。

  事实上,所有java.sql.Driver的实现类,都提供了static块,块内的代码就是把自己注册到DriverManager中。

2.2 Connection

  Jdbc程序中的Connection,它用于代表数据库的连接,Connection是数据库编程中最重要的一个对象,客户端与数据库所有交互都是通过connection对象完成的,这个对象的常用方法:

  • createStatement():创建向数据库发送sql的statement对象。
  • prepareStatement(sql) :创建向数据库发送预编译sql的PrepareSatement对象。

2.3 Statement

  Jdbc程序中的Statement对象用于向数据库发送SQL语句,想完成对数据库的增删改查,只需要通过这个对象向数据库发送增删改查语句即可。 Statement对象常用方法:

  • executeQuery(String sql) :用于向数据发送查询语句。
  • executeUpdate(String sql):用于向数据库发送insert、update或delete语句
  • execute(String sql):用于向数据库发送任意sql语句
  • addBatch(String sql) :把多条sql语句放到一个批处理中。
  • executeBatch():向数据库发送一批sql语句执行。

2.4 ResultSet

  Jdbc程序中的ResultSet用于代表Sql语句的执行结果。

【ResultSet之滚动结果集】

  Resultset封装执行结果时,采用的类似于二维表格的方式。ResultSet 对象维护了一个指向表格数据行的游标,初始的时候,游标在第一行之前。ResultSet提供了一系列的方法来移动游标:

  • boolean previous():把光标向上挪一行;
  • boolean next():把光标向下挪一行;
  • boolean absolute(int row):绝对位移,把光标移动到指定的行上;
  • void beforeFirst():把光标放到第一行的前面,这也是光标默认的位置;
  • void afterLast():把光标放到最后一行的后面;
  • boolean isFirst():当前光标位置是否在第一行上;
  • boolean isLast():当前光标位置是否在最后一行上;

【ResultSet之获取结果集元数据】

  • 得到元数据:rs.getMetaData(),返回值为ResultSetMetaData;
  • 获取结果集列数:int getColumnCount()
  • 获取指定列的列名:String getColumnName(int colIndex)

【ResultSet之获取列数据】

  可以通过next()方法使ResultSet的游标向下移动,当游标移动到你需要的行时,就需要来获取该行的数据了,ResultSet提供了一系列的获取列数据的方法:

  获取任意类型的数据:

    • Object getObject(int columnIndex):获取指定列的Object类型的数据。
    • Object getObject(string columnName):获取名称为columnName的列的Object数据;

  获取指定类型的数据:

    • String getString(int columnIndex):获取指定列的String类型数据;
    • String getString(String columnName):获取名称为columnName的列的String数据;
    • int getInt(int columnIndex):获取指定列的int类型数据;
    • int getInt(String columnName):获取名称为columnName的列的int数据;

  注意:上面方法中,参数columnIndex表示列的索引,列索引从1开始,而不是0,这第一点与数组不同。

三、使用JDBC对数据库进行CRUD

3.1 对数据库做增、删、改

/**
* 对数据库做增、删、改
*/
@Test
public void fun1() throws ClassNotFoundException, SQLException {
// 准备四大参数
String driverClassName = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/test";
String username = "root";
String password = "root"; // 加载驱动类
Class.forName(driverClassName);
// 使用DriverManager,以及剩下的3个参数,得到Connection
Connection connection = DriverManager.getConnection(url, username, password); // 通过Connection对象创建Statement
Statement statement = connection.createStatement();
// 使用statement发送sql语句
String sql = "DELETE FROM t_user";
int i = statement.executeUpdate(sql);
System.out.println(i);
}

3.2 对数据库进行查询

/**
* 执行查询
*/
@Test
public void fun2() throws ClassNotFoundException, SQLException {
// 准备四大参数
String driverClassName = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/test";
String username = "root";
String password = "root"; // 加载驱动类
Class.forName(driverClassName);
// 使用DriverManager,以及剩下的3个参数,得到Connection
Connection connection = DriverManager.getConnection(url, username, password); // 通过Connection对象创建Statement
Statement statement = connection.createStatement();
// 调用statement的ResultSet rs = executeQuery(String querySql)
ResultSet rs = statement.executeQuery("select * from t_account"); // 解析ResultSet
// 把行光标移动到第一行,可以调用next()方法完成
while (rs.next()) { //把光标向下移动一行,并判断下一行是否存在
int id = rs.getInt(1);//通过列编号来获取该列的值
String name = rs.getString("name");//通过列名称来获取该列的值
double money = rs.getDouble("money");
System.out.println(id + "," + name + "," + money);
} // 关闭资源(倒关)
rs.close();
statement.close();
connection.close();
}

  注意:Jdbc程序运行完后,切记要释放程序在运行过程中,创建的那些与数据库进行交互的对象,这些对象通常是ResultSet, Statement和Connection对象,特别是Connection对象,它是非常稀有的资源,用完后必须马上释放,如果Connection不能及时、正确的关闭,极易导致系统宕机。Connection的使用原则是尽量晚创建,尽量早的释放。
  为确保资源释放代码能运行,资源释放代码也一定要放在finally语句中。

四、JdbcUtils工具类

  你也看到了,连接数据库的四大参数是:驱动类、url、用户名,以及密码。这些参数都与特定数据库关联,如果将来想更改数据库,那么就要去修改这四大参数,那么为了不去修改代码,我们写一个JdbcUtils类,让它从配置文件中读取配置参数,然后创建连接对象。

  JdbcUtils.java

public class JdbcUtils {
private static final String dbconfig = "dbconfig.properties";
private static Properties prop = new Properties();
// 只在JdbcUtils类被加载时执行一次
static{
/*
把配置文件内容加载到prop对象中。
因为是放到static块中完成的加载操作,
所有加载操作只会在JdbcUtils类被加载时完成对配置文件的加载。
*/
try {
// 给prop进行初始化,即加载dbconfig.properties文件到prop对象中
InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream(dbconfig);
prop.load(inputStream);
// 加载驱动类
Class.forName(prop.getProperty("driverClassName"));
} catch (Exception e) {
throw new RuntimeException(e);
}
} // 获取连接
public static Connection getConnection() {
try {
return DriverManager.getConnection(prop.getProperty("url"), prop.getProperty("username"), prop.getProperty("password"));
} catch (SQLException e) {
throw new RuntimeException(e);
}
} // 释放连接
public static void release(Connection connection, PreparedStatement pstmt, ResultSet rs) {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (pstmt != null) {
try {
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (connection != null) {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
} }

  dbconfig.properties

driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF8
username=root
password=root

五、PreparedStatement

5.1 什么是SQL攻击

  在需要用户输入的地方,用户输入的是SQL语句的片段,最终用户输入的SQL片段与我们DAO中写的SQL语句合成一个完整的SQL语句!例如用户在登录时输入的用户名和密码都是为SQL语句的片段!下面我们通过一个案例来演示SQL攻击。

  首先我们需要创建一张用户表,用来存储用户的信息。

CREATE TABLE user(
uid CHAR(32) PRIMARY KEY,
username VARCHAR(30) UNIQUE KEY NOT NULL,
PASSWORD VARCHAR(30)
); INSERT INTO user VALUES('U_1001', 'zs', 'zs');
SELECT * FROM user;

  现在用户表中只有一行记录,就是zs。

  下面我们写一个login()方法!

public void login(String username, String password) {
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
try {
con = JdbcUtils.getConnection();
stmt = con.createStatement();
String sql = "SELECT * FROM user WHERE " +
"username='" + username +
"' and password='" + password + "'";
rs = stmt.executeQuery(sql);
if(rs.next()) {
System.out.println("欢迎" + rs.getString("username"));
} else {
System.out.println("用户名或密码错误!");
}
} catch (Exception e) {
throw new RuntimeException(e);
} finally {
JdbcUtils.close(con, stmt, rs);
}
}

  下面是调用这个方法的代码:

login("a' or 'a'='a", "a' or 'a'='a");

  这行当前会使我们登录成功!因为是输入的用户名和密码是SQL语句片段,最终与我们的login()方法中的SQL语句组合在一起!我们来看看组合在一起的SQL语句:

SELECT * FROM tab_user WHERE username='a' or 'a'='a' and password='a' or 'a'='a'

  知道了SQL攻击的原因后,我们可以通过一下方法来防止SQL攻击:

  • 过滤用户输入的数据中是否包含非法字符;
  • 分步交验!先使用用户名来查询用户,如果查找到了,再比较密码;
  • 使用PreparedStatement。

5.2 PreparedStatement是什么

  PreparedStatement叫预编译声明。PreparedStatement是Statement的子接口,我们可以使用PreparedStatement来替换Statement。PreparedStatement的实例对象可以通过调用Connection.preparedStatement()方法获得。相对于Statement对象而言,PreperedStatement有如下好处:

  • 防止SQL攻击;
  • 提高代码的可读性,以可维护性;
  • 提高效率。

  Statement会使数据库频繁编译SQL,可能造成数据库缓冲区溢出。PreparedStatement可对SQL进行预编译,从而提高数据库的执行效率。并且PreperedStatement对于sql中的参数,允许使用占位符的形式进行替换,简化sql语句的编写。

5.3 PreparedStatement的使用

  第一步:给出sql模板:所有的参数使用?来替代

  第二步:调用Connection的PreparedStatement prepareStatement(String sql模板),即创建它时就让它与一条SQL模板绑定;

  第三步:调用PreparedStatement的setXXX()系列方法为问号设置值

  第四步:调用executeUpdate()或executeQuery()方法,但要注意,调用没有参数的方法;

/**
* 通过PreparedStatement对象完成对数据库的CRUD操作
*/
@Test
public void insert() {
Connection connection = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
// 获取一个数据库连接
connection = JdbcUtils.getConnection();
// 要执行的SQL命令,SQL中的参数使用?作为占位符
String sql = "insert into t_user(id,name) values(?,?)";
// 通过connection对象获取负责执行SQL命令的prepareStatement对象
pstmt = connection.prepareStatement(sql);
// 为SQL语句中的参数赋值,注意,索引是从1开始的
pstmt.setInt(1, 1); //id是int类型的
pstmt.setString(2, "张三"); //name是varchar(字符串类型)
// 执行插入操作,executeUpdate方法返回成功的条数
int num = pstmt.executeUpdate();
if (num > 0) {
System.out.println("插入成功");
}
}catch (Exception e){
e.printStackTrace();
}finally {
// SQL执行完成之后释放相关资源
JdbcUtils.release(connection, pstmt, rs);
}
} @Test
public void delete() {
Connection connection = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
connection = JdbcUtils.getConnection();
String sql = "delete from t_user where id=?";
pstmt = connection.prepareStatement(sql);
pstmt.setInt(1, 1);
int num = pstmt.executeUpdate();
if (num > 0) {
System.out.println("删除成功");
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
JdbcUtils.release(connection, pstmt, rs);
}
} @Test
public void update() {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
conn = JdbcUtils.getConnection();
String sql = "update t_user set name=? where id= ?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, "李四");
pstmt.setInt(2, 1);
int num = pstmt.executeUpdate();
if (num > 0) {
System.out.println("更新成功");
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
JdbcUtils.release(conn, pstmt, rs);
}
} @Test
public void find() {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
conn = JdbcUtils.getConnection();
String sql = "select * from t_user where id=?";
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, 1);
rs = pstmt.executeQuery();
if (rs.next()) {
System.out.println(rs.getString("name"));
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
JdbcUtils.release(conn, pstmt, rs);
}
}

  注意:PreparedStatement对象独有的executeQuery()方法是没有参数的,而Statement的executeQuery()是需要参数(SQL语句)的。因为在创建PreparedStatement对象时已经让它与一条SQL模板绑定在一起了,所以在调用它的executeQuery()和executeUpdate()方法时就不再需要参数了。

  PreparedStatement最大的好处就是在于重复使用同一模板,给予其不同的参数来重复的使用它。这才是真正提高效率的原因。

  所以,建议在今后的开发中,无论什么情况,都去需要PreparedStatement,而不是使用Statement

5.4 预处理的原理

【服务器(数据库)的工作】

  1. 校验sql语句的语法!
  2. 编译:一个与函数相似的东西!
  3. 执行:调用函数

【PreparedStatement】

  使用前提:连接的数据库必须支持预处理!几乎没有不支持的!

  特性:每个pstmt都与一个sql模板绑定在一起,先把sql模板给数据库,数据库先进行校验,再进行编译。执行时只是把参数传递过去而已!若二次执行时,就不用再次校验语法,也不用再次编译!直接执行!

参考:https://www.cnblogs.com/xdp-gacl/p/3946207.html

JavaWeb学习笔记(十二)—— JDBC的基本使用的更多相关文章

  1. python3.4学习笔记(十二) python正则表达式的使用,使用pyspider匹配输出带.html结尾的URL

    python3.4学习笔记(十二) python正则表达式的使用,使用pyspider匹配输出带.html结尾的URL实战例子:使用pyspider匹配输出带.html结尾的URL:@config(a ...

  2. Go语言学习笔记十二: 范围(Range)

    Go语言学习笔记十二: 范围(Range) rang这个关键字主要用来遍历数组,切片,通道或Map.在数组和切片中返回索引值,在Map中返回key. 这个特别像python的方式.不过写法上比较怪异使 ...

  3. java jvm学习笔记十二(访问控制器的栈校验机制)

    欢迎装载请说明出处:http://blog.csdn.net/yfqnihao 本节源码:http://download.csdn.net/detail/yfqnihao/4863854 这一节,我们 ...

  4. javaweb学习笔记(二)

    一.javaweb学习是所需要的细节 1.Cookie的注意点 ① Cookie一旦创建,它的名称就不能更改,Cookie的值可以为任意值,创建后允许被修改. ② 关于Cookie中的setMaxAg ...

  5. (C/C++学习笔记) 十二. 指针

    十二. 指针 ● 基本概念 位系统下为4字节(8位十六进制数),在64位系统下为8字节(16位十六进制数) 进制表示的, 内存地址不占用内存空间 指针本身是一种数据类型, 它可以指向int, char ...

  6. Python学习笔记(十二)—Python3中pip包管理工具的安装【转】

    本文转载自:https://blog.csdn.net/sinat_14849739/article/details/79101529 版权声明:本文为博主原创文章,未经博主允许不得转载. https ...

  7. Javaweb学习笔记——(二十八)——————Servlet3.0、动态代理、类加载器

    web最后一天:完了. Servlet3.0          一.要求         1.MyEclipse10.0或以上版本         2.发布到Tomcat7.0或以上版本 二.步骤   ...

  8. Javaweb学习笔记——(二十)——————Javaweb监听器、国际化

    Javaweb监听器     三大组件         *Servlet         *Listener         *Filter Listener:监听器         1.初次相见:A ...

  9. JavaWeb学习笔记(二十二)—— 过滤器filter

    一.什么是过滤器 过滤器filter是JavaWeb三大组件之一,它与Servlet很相似!不过过滤器是用来拦截请求的,而不是处理请求的.WEB开发人员通过Filter技术,对web服务器管理的所有w ...

  10. JavaWeb学习笔记(二十)—— Ajax

    一.Ajax概述 1.1 什么是Ajax AJAX(Asynchronous Javascript And XML)翻译成中文就是“异步Javascript和XML”.即使用Javascript语言与 ...

随机推荐

  1. 手动去除uTorrent中广告的步骤(V3.4.9依然有效)

    1.开打utorrent,依次点击选项->设置->高级. 在“高级”界面中,你会看到“过滤器”,在“过滤器”右侧的框中输入“offers”. 这时会在下面框中看到“offers.left_ ...

  2. Objects & Class

    [Objects & Class] 1.定义一个类. 上述代码中,numberOfSides是实例变量,simpleDescription也是实例方法. 2.创建实例,使用实例. 3.init ...

  3. Ubuntu无法安装rpm包,ubuntu RPM should not be used directly install RPM packages, use Alien instead!

    Ubuntu无法安装rpm包,ubuntu RPM should not be used directly install RPM packages, use Alien instead! 简单来说, ...

  4. 744. Find Smallest Letter Greater Than Target 查找比目标字母大的最小字母

    [抄题]: Given a list of sorted characters letters containing only lowercase letters, and given a targe ...

  5. SqlServer——用户定义函数

    根据用户定义函数返回值的类型,可将用户定义函数分为如下三个类别: (1) 返回值为可更新表的函数 若用户定义函数包含单个 SELECT 语句且该语句可更新,则该函数返回的表也可更新,这样的函数称为内嵌 ...

  6. shell chmod中数字与字母的含义

    数字与字母的组合是chmod命令赋予文件,目录访问权限的方式 访问权限:可读,可写,可执行 字母表示:r      , w    , x 数字表示:4     , 2     , 1        , ...

  7. linux Shell中常用的条件判断

    linux Shell中常用的条件判断 -b file            若文件存在且是一个块特殊文件,则为真 -c file            若文件存在且是一个字符特殊文件,则为真 -d ...

  8. 默默的发现在网上找到的hook NtQueryDirectoryFile......

    默默的发现在网上找到的hook  NtQueryDirectoryFile...... hook  NtQueryDirectoryFile是为了实现文件隐藏,然后就发现在网上发现的代码版本似乎同一个 ...

  9. 编写高质量代码改善C#程序的157个建议——建议52:及时释放资源

    建议52:及时释放资源 垃圾回收机制自动为我们隐式地回收了资源(垃圾回收器会自动调用终结器),那我们为什么要主动释放资源呢? private void buttonOpen_Click(object ...

  10. Tomcat与Web.xml配置

    1.编码配置 <Connector acceptCount=”100″ connectionTimeout=”20000″ disableUploadTimeout=”true” enableL ...