import java.sql.*;

 public class MysqlTest
{
public static void main(String[] args) throws SQLException,ClassNotFoundException{
// TODO Auto-generated method stub String url = "jdbc:mysql://localhost/xh";
String username = "xiaohengdada";
String password = "123456";
//DriverManager.registerDriver(new com.mysql.jdbc.Driver()); Class.forName("org.gjt.mm.mysql.Driver"); Connection connection = DriverManager.getConnection(url,username,password); Statement stat = connection.createStatement(); // 执行查找操作
ResultSet rsResultSet = stat.executeQuery("select * from students"); while (rsResultSet.next()) {
System.out.println("id = "+ rsResultSet.getObject("id"));
System.out.println("name = "+ rsResultSet.getObject("name"));
System.out.println("sex = "+ rsResultSet.getObject("sex"));
System.out.println("age = "+ rsResultSet.getObject("age"));
} // 执行更新操作
String sql = "update students set name = 'xiaoheng' where name = 'Ender'";
System.out.println(sql);
int statentnum = stat.executeUpdate(sql);
System.out.println(statentnum);
if (statentnum>0) {
System.out.println("update ok");
} // 执行删除操
sql = "delete from students where name = 'Peter'";
System.out.println(sql);
statentnum = stat.executeUpdate(sql);
System.out.println(statentnum);//为什么这里输出的结果为0
if (statentnum>0) {
System.out.println("delete ok");
} //执行插入操作
sql="insert into students values(8,'nimeide','fema','255')";
System.out.println(sql);
statentnum = stat.executeUpdate(sql);
System.out.println(statentnum);//为什么这里输出的结果为0
if (statentnum>0) {
System.out.println("insert ok");
} // 资源的释放
rsResultSet.close();
stat.close();
connection.close();
}
}

 

上面相当于普通的交互过程,每处理一条数据,就需要访问一次数据库。

故可采用批处理和事务来进行处理。

批处理:累积到一定数量,再一次性提交到数据库,减少了与数据库的交互操作,所以效率会提高。

事务:事务指逻辑上的一组操作,组成这组操作的各个单元,要么全部成功,要么全部不成功,默认是关闭事务的。

SQL 注入的防范

SQL 注入是用户利用某些系统没有对输入数据进行充分的检查,从而进行恶意破坏的行为。
1、statement存在sql注入攻击问题,例如登陆用户名采用' or 1=1 or username=‘
2、对于防范 SQL 注入,可以采用PreparedStatement取代Statement。

PreparedStatement

PreperedStatement是Statement的孩子,它的实例对象可以通过调用Connection.preparedStatement()方法获得,相对于Statement对象而言的优势:
(1) 防止SQL注入:PreperedStatement可以避免SQL注入的问题。
(2) 预编译SQL语句:Statement会使数据库频繁编译SQL,可能造成数据库缓冲区溢出。PreparedStatement 可对SQL进行预编译,从而提高数据库的执行效率。
(3) 使用占位符简化语句:并且PreperedStatement对于sql中的参数,允许使用占位符的形式进行替换,简化sql语句的编写。 (例如多次循环插入数据)

java连接mysql(一)的更多相关文章

  1. java连接mysql

    Java 连接 MySQL 需要驱动包,最新版下载地址为:http://dev.mysql.com/downloads/connector/j/,解压后得到jar库文件,然后在对应的项目中导入该库文件 ...

  2. java连接mysql数据库详细步骤解析

    java连接mysql数据库详细步骤解析      第一步:下载一个JDBC驱动包,例如我用的是:mysql-connector-java-5.1.17-bin.jar      第二步:导入下载的J ...

  3. java 连接 MySQL

    java 连接 MySQL 1.准备工作 需要下载的工具: MySQL:http://www.mysql.com/downloads/ MySQL的可视化工具SQLyog:https://www.we ...

  4. Java连接MySQL数据库及简单操作代码

    1.Java连接MySQL数据库 Java连接MySql需要下载JDBC驱动MySQL-connector-java-5.0.5.zip(举例,现有新版本).然后将其解压缩到任一目录.我是解压到D盘, ...

  5. 转载:Java连接MySQL 数据库的正确操作流程

    转载网址:http://www.bitscn.com/pdb/mysql/201005/186551.html       以下的文章主要介绍的是Java连接MySQL 数据库(以MySQL数据库为例 ...

  6. Java连接MySQL数据库增删改查通用方法

    版权声明:本文为博主原创文章,未经博主允许不得转载. Java连接MySQL数据库增删改查通用方法 运行环境:eclipse+MySQL 以前我们Java连接MySQL数据库都是一个数据库写一个类,类 ...

  7. 【JDBC】Java 连接 MySQL 基本过程以及封装数据库工具类

    一. 常用的JDBC API 1. DriverManager类 : 数据库管理类,用于管理一组JDBC驱动程序的基本服务.应用程序和数据库之间可以通过此类建立连接.常用的静态方法如下 static ...

  8. Java进阶(二十五)Java连接mysql数据库(底层实现)

    Java进阶(二十五)Java连接mysql数据库(底层实现) 前言 很长时间没有系统的使用java做项目了.现在需要使用java完成一个实验,其中涉及到java连接数据库.让自己来写,记忆中已无从搜 ...

  9. Java 连接 MySQL 数据库

    最近想学习一下 Java 连接 MySQL 数据库,于是有了这样的一些问题&解决办法. 首先是解决 JDBC(Java Data Base Connectivity)驱动问题,因为默认安装的J ...

  10. java连接mysql的过程

    今天突然心血来潮,想要用java连接mysql,记得以前是在vs2010的环境下用C#连接sql sever,其实他们的方法都差不多. 现在就可以简单的介绍下java如何连接mysql 第一步,设计m ...

随机推荐

  1. 较多java书籍的网站 tools138.com

    http://www.tools138.com/front/resource/java_book.jsp

  2. static,静态关键字的详解

    一,使用static声明属性 class Person{ // 定义Person类 String name ; // 定义name属性,暂时不封装 int age ; // 定义age属性,暂时不封装 ...

  3. 【C#】【MySQL】C# 查询数据库语句@Row:=@Row+1

    如何实现数据库查询产生虚拟的一列序号的功能: ) )AS r; 该语句可以实现产生虚拟的一列数据在MySQL中运行没有问题. 但是在C#里面调用去出现了错误"Parameter '@ROW' ...

  4. SOS.dll (SOS Debugging Extension)

    SOS.dll (SOS Debugging Extension) lays threads associated with a live thread. The -special option di ...

  5. DotNet二维码操作组件ThoughtWorks.QRCode

    DotNet二维码操作组件ThoughtWorks.QRCode 在生活中有一种东西几乎已经快要成为我们的另一个电子"身份证",那就是二维码.无论是在软件开发的过程中,还是在普通用 ...

  6. 如何在Ubuntu 14.04中安装最新版Eclipse

    想必很多开发人员都知道,Ubuntu 软件源中提供的并不是最新版本的 Eclipse,本教程就教大家如何在 Ubuntu 14.04 中快速安装 Eclipse 官方发布的最新版本. 到目前为止,Ec ...

  7. linux实践——ELF分析

    一.ELF的部分结构定义 elf header(定义在/usr/include/elf.h)//64位的系统ELF文件头包括以下两个部分 #define EI_NIDENT (16) typedef ...

  8. iOS新加速计事件(陀螺仪和加速计)

    iOS新加速计事件 [iOS新加速计事件] 1.iOS5.0以前,可以使用UIAcceleration来监听加速计事件. 2.Bug iOS5.0以后,UIAccelerometerDelegate已 ...

  9. JSONProxy - 获取跨域json数据工具

    JSONProxy是一款很好的获取json数据的代理网站,“Enables cross-domain requests to any JSON API”.当你苦于无法跨域获取json数据时,不妨一试, ...

  10. apply、call、callee、caller初步了解

    在javascript中这四货通常一起出现介绍,楼主记忆力实在是太差经常忘记用法,故记此文. apply和call apply和call是函数原型的一个方法,调用者的类型必须是函数.官方解释:应用某一 ...