sql数据库

jdbc批处理

点点圈 提交于 2020-03-21 08:03:44
批量处理允许将相关的SQL语句分组到批处理中,并通过对数据库的一次调用来提交它们,一次执行完成与数据库之间的交互。 一次向数据库发送多个SQL语句时,可以减少通信开销,从而提高性能。 不需要JDBC驱动程序来支持此功能。应该使用 DatabaseMetaData.supportsBatchUpdates() 方法来确定目标数据库是否支持批量更新处理。如果JDBC驱动程序支持此功能,该方法将返回 true 。 Statement , PreparedStatement 和 CallableStatement 的 addBatch() 方法用于将单个语句添加到批处理。 executeBatch() 用于执行组成批量的所有语句。 executeBatch() 返回一个整数数组,数组的每个元素表示相应更新语句的更新计数。 就像将批处理语句添加到处理中一样,可以使用 clearBatch() 方法删除它们。此方法将删除所有使用 addBatch() 方法添加的语句。 但是,无法指定选择某个要删除的语句。 使用Statement对象进行批处理 以下是使用 Statement 对象的批处理的典型步骤序列 - 使用 createStatement() 方法创建 Statement 对象。 使用 setAutoCommit() 将自动提交设置为 false 。 使用 addBatch()

三大措施将SQL注入攻击的危害最小化

☆樱花仙子☆ 提交于 2020-03-21 06:45:05
使用用户提供的数据进行 数据库 查询的任何应用程序是SQL注入攻击的一个潜在目标。数据库管理员可能无法完全阻止针对其数据库服务器的SQL注入式攻击;但是,管理员们和应用程序开发人员可以做一些事情,将这些攻击的影响最小化。那么 数据库 管理 员可以做什么呢? 不要让数据库和Web服务器放在同一台计算机上。 使用防火墙或不可路由的IP地址来阻止到数据库的互联网访问。一旦配置完毕,来自数据库服务器的数据包将不能被转发到互联网。在Web服务器上需要添加一条路由,这样才能找到数据库服务器。 配置可信任的IP接入和访问(例如,IPSEC),以控制哪些机器能够与数据库服务器通信。 从数据库服务器上移除所有的示例脚本和应用 程序 。 为每一个应用程序的数据库连接账户使用一个专用的低特权账户。不要使用sa、dba、admin。 不要准许用户或应用程序直接访问数据库表。要使用对数据库拥有有限访问的应用程序 角色 。如果应用程序仅需要读取访问,就要将数据库的访问限制为只读。 从生产数据库中移除未用的存储过程。 将对应用程序的访问仅授权给 用户 创建的存储过程。 不要将应用程序的“_ANY_”授权给操作系统命令或系统存储过程。 应用程序的 设计 人员可以做什么呢? 程序设计人员肩负着保障Web应用程序安全的重要责任。在设计和编码阶段加强安全审察才是杜绝程序漏洞的关键。大体而言

JDBC学习笔记(4)——PreparedStatement的使用

亡梦爱人 提交于 2020-03-20 22:02:00
PreparedStatement public interface PreparedStatement extends Statement;可以看到PreparedStatement是Statement的子接口,我们在执行查询或者更新数据表数据的时候,拼写SQL语句是一个很费力并且容易出错的事情,PreparedStatement可以简化这样的一个过程. PreParedStatement 1).why?我们为什么要使用它 使用Statement需要进行拼写SQl语句,辛苦并且容易出错,之前使用Statement的SQL语句的形式是这样的 String sql = "insert into examstudent" + " values(" + student.getFlowId() + "," + student.getType() + ",'" + student.getIdCard() + "','" + student.getExamCard() + "','" + student.getStudentName() + "','" + student.getLocation() + "'," + student.getGrade() + ")"; 使用PreparedStatement:是Statement的子接口,可以传入 带占位符 的SQL语句

JDBC中的Statement和PreparedStatement的区别

倾然丶 夕夏残阳落幕 提交于 2020-03-20 21:14:59
PreparedStatement是什么? PreparedStatement是java.sql包下面的一个接口,用来执行SQL语句查询,通过调用connection.preparedStatement(sql)方法可以获得PreparedStatment对象。数据库系统会对sql语句进行预编译处理(如果JDBC驱动支持的话),预处理语句将被预先编译好,这条预编译的sql查询语句能在将来的查询中重用,这样一来,它比Statement对象生成的查询速度更快; public class PreparedStmtExample { public static void main ( String args [ ] ) throws SQLException { Connection conn = DriverManager . getConnection ( "mysql:\\localhost:1520" , "root" , "root" ) ; PreparedStatement preStatement = conn . prepareStatement ( "select distinct loan_type from loan where bank=?" ) ; preStatement . setString ( 1 , "Citibank" ) ; ResultSet

PreparedStatement 与 Statement

痴心易碎 提交于 2020-03-20 21:14:45
PreparedStatement是用来执行SQL查询语句的API之一,Java提供了 Statement、PreparedStatement 和 CallableStatement三种方式来执行查询语句,其中 Statement 用于通用查询, PreparedStatement 用于执行参数化查询,而 CallableStatement则是用于存储过程。同时PreparedStatement还经常会在Java面试被提及,譬如:Statement与PreparedStatement的区别以及如何避免SQL注入式攻击?这篇教程中我们会讨论为什么要用PreparedStatement?使用PreparedStatement有什么样的优势?PreparedStatement又是如何避免SQL注入攻击的? PreparedStatement是什么? PreparedStatement是java.sql包下面的一个接口,用来执行SQL语句查询,通过调用connection.preparedStatement(sql)方法可以获得PreparedStatment对象。数据库系统会对sql语句进行预编译处理(如果JDBC驱动支持的话),预处理语句将被预先编译好,这条预编译的sql查询语句能在将来的查询中重用,这样一来,它比Statement对象生成的查询速度更快。下面是一个例子: 1 2 3

黑马程序员----SQL 语句学习

百般思念 提交于 2020-03-20 07:43:07
---------------------- Windows Phone 7手机开发 、 .Net培训 、期待与您交流! ---------------------- 数据库概念 1.1 catalog(分类),不同类的数据应该放到不同的数据库中 a、偏于对各个Catalog进行个性化管理 b、避免命名冲突 c、安全性更高 1.2 Table(表) 不同类型的资料放到不同的格子中,将这种区域叫做表。不同的表根据方的数据不同进行空间的优化,找起来也方便。 a、主键(PrimaryKey) : 就是数据行的唯一标识。不会重复的列才能当主键。一个表可以没有主键,但是会非常难以处理,因此没有特殊里有表都要设定主键。 主键有两种选用策略: 业务主键和逻辑主键 。业务主键是使用有业务意义的字段做主键,比如身份证号、银行账号等;逻辑主键是使用没有任何业务意义的字段做主键,完全给程序看的,业务人员不会看的数据。因为很难保证业务主键不会重复,不会变化,因此推荐用逻辑主键。 b、表间关联、外键:当表中出现字段重复时,可以把原先比较重复的表,化简为两个表来表示。一个表中的主键是另外一个表的外键。外键就是关联两个表的键. 1.3在数据库中的数据类型与在C#中的区别 bit相当于C#中的bool类型, char(10)10个字符 int 32位 bigint 64位 nvarchar(max)无限长的字符串

oracle 权限管理

落爺英雄遲暮 提交于 2020-03-20 07:34:07
Oracle用户、权限、角色管理 收藏 Oracle 权限设置 一、权限分类: 系统权限:系统规定用户使用数据库的权限。(系统权限是对用户而言)。 实体权限:某种权限用户对其它用户的表或视图的存取权限。(是针对表或视图而言的)。 二、系统权限管理: 1 、系统权限分类: DBA: 拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构。 RESOURCE:拥有Resource权限的用户只可以创建实体,不可以创建数据库结构。 CONNECT:拥有Connect权限的用户只可以登录Oracle,不可以创建实体,不可以创建数据库结构。 对于普通用户:授予connect, resource权限。 对于DBA管理用户:授予connect,resource, dba权限。 2 、系统权限授权命令: [系统权限只能由DBA用户授出:sys, system(最开始只能是这两个用户)] 授权命令:SQL> grant connect, resource, dba to 用户名1 [,用户名2]...; [普通用户通过授权可以具有与system相同的用户权限,但永远不能达到与sys用户相同的权限,system用户的权限也可以被回收。] 例: SQL> connect system/manager SQL> Create user user50 identified by user50; SQL>

MySQL函数库

江枫思渺然 提交于 2020-03-20 07:33:00
MySQL函数库,这个函数库是一个外部函数库!这个函数提供了对于MySQL数据库进行操作的常用函数,如连接MySQL服务器、打开数据库、执行SQL语句等。所以这个函数库的功能对于我们来说是非常重要的! 其实,MySQL数据库是整个程序开发的最底层,我们在程序开发时,就必须为其添加一层漂亮的外衣,这层漂亮的外衣就是图形化用户界面(Graphical User Interface,简称GUI,又称图形用户接口),也就是使用者只需要具体基本的计算机知识,然后通过鼠标,就可以实现某些复杂的功能!其实,我们现在所使用的Windows操作系统就是典型的GUI! 1. mysql_connect 功能:建立到MySQL服务器的连接 语法:[$变量名称=]mysql_connect(“服务器名称:端口”,”用户名”,”密码”); 如果正确的连接到了MySQL服务器,则返回值的数据类型为资源(resource),否则将返回布尔型false 2. mysql_select_db 功能:打开指定数据库 语法:[$变量名称=]mysql_select_db(“数据库名称”[,连接标识符]); 如果省略连接标识符,则默认情况下使用刚刚打开的服务器连接 3. mysql_query 功能:执行MySQL命令 语法:[$变量名称=]mysql_query(“SQL命令”[,连接标识符]); 如果省略连接标识符

web sql 基本操作 - 增删改查

陌路散爱 提交于 2020-03-20 06:55:44
不喜欢看md原文的 可以访问这个链接: http://note.youdao.com/noteshare?id=6a91e3dea7cdf5195bb0e851d9fcb5a5 # web sql 增删改查 ## 打开数据库 ``` /* * @description openDatabase方法打开一个已经存在的数据库,如果数据库不存在, 它还可以创建数据库 * @param name {string} - 数据库名称 * @param version {string} - 版本号 * @param baseDesc {string} - 数据库描述 * @param size {number|string} - 设置数据的大小 * @param callback {function} - 回调函数(可省略) * example : * var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024,function() * {}) */ var db = openDatabase(name, version, baseDesc,size,callback) ``` ## 数据库语句使用方法 ``` db.transaction(function(tx) { /* * @description 数据库方法使用语句

SQL语句行列转换(附带数据库、表、视图操作)

人走茶凉 提交于 2020-03-20 06:52:57
本来只是想解决怎么把数据的行和列进行转换的,但最近觉得一些数据库SQL语句的操作,很久没用了,有点陌生。所以也就随笔记录一些简单但很基本的操作。 我的数据库是MSSQL2005. 第一部分主要的操作包含:数据库的创建、删除,表的增、删、改,表中数据的增、删、改、查,视图的操作。 1 --查询数据库是否存在 2 if exists ( select * from sysdatabases where [name]='TestDB') 3 print 'Yes, the DB exists' 4 else 5 print 'No, need a new one?' 6 7 --新建一个数据库 8 create database TestDB on 9 ( 10 name = 'TestData', 11 filename = 'G:\DBS\KeyTest.mdf', 12 size = 3, 13 filegrowth = 2 14 ) 15 log on 16 ( 17 name = 'TestLog', 18 filename = 'G:\DBS\KeyTest.ldf', 19 size = 3, 20 filegrowth = 10 21 ) 22 23 --drop database TestDB 24 25 use TestDB 26 go 27 28 --新建一个表