03.JDBC数据库编程之处理DML语句

转载请标明出处:http://blog.csdn.net/u012637501

一、DML与Statement接口

1.DML(Data manipulation language)

数据库操作语句,用于添加、删除、更新和查询数据库纪录,并检查数据库的完整性。常用的语句关键字主要包括insert、delete、update等。

(1)添加/修改/删除表数据

■增加一行数据:(思想:往哪张表添加?给哪几行添加值?分别是什么值?)

insert  into  表名  (列1,列2,...,列n)   values  (值1,值2...,值n);

■修改某行的列数据:(思想:改哪张表?你需要改几列的值?分别改为什么值?在哪些行生效?)

update 表名 set 列1=新值1, 列2=新值2,where expr;

■删除行:(思想:你要删除哪张表的数据?你要删掉哪些行?)

delete from 表名 where expr;

■查看表数据:

select * from [表名];

(2)修改字段及属性

■修改表(表中的字段类型、字段名、添加字段、删除字段、修改表名)

①修改表中字段属性(不能修改字段名)

alter table [表名] modify [字段名] [字段类型] [约束条件] [fisrt|after 列名];

②修改表中字段名及属性

alter table [表名] change [源字段名] [修改后的字段名] [字段类型] [约束条件] [fisrt|after 列名];

③增加表字段

alter table [表名] add [字段名] [字段类型] [约束条件] [first|after 列名];

④删除表字段

alter table [表名] drop [字段名];

注意:[first|after 列名],用于修改字段的排序,其中,after将新增的字段添加在某一字段后;first表示将新建的字段放在该表第一列。

■修改表名

命令:alter table [表名] rename to [新表名];

2.Statement接口

用于执行静态的SQL语句并获得返回结果的接口,通过Connection中的createStatement方法得到的

即,Statement stmt=conn.createStatement())

void addBatch(String sql)

Adds the given SQL command to the current list of commands for this Statement object.

void clearBatch()

Empties this Statement object‘s current list of SQL commands.

void close()

Releases this Statement object‘s database and JDBC resources immediately instead of waiting for this to happen when it is automatically closed.

boolean execute(String sql)

Executes the given SQL statement, which may return multiple results.

int[] executeBatch()

Submits a batch of commands to the database for execution and if all commands execute successfully, returns an array of update counts.

ResultSet executeQuery(String sql)

Executes the given SQL statement, which returns a single ResultSet object.

int executeUpdate(String sql)

Executes the given SQL statement, which may be an INSERTUPDATE,
or DELETE statement or an SQL statement that returns nothing, such as an SQL DDL statement.

int executeUpdate(String sql, String[] columnNames)

Executes the given SQL statement and signals the driver that the auto-generated keys indicated in the given array should be made available for retrieval.

boolean isClosed()

Retrieves whether this Statement object has been closed.

boolean isCloseOnCompletion()

Returns a value indicating whether this Statement will be closed when all its dependent result sets are closed.

void setMaxRows(int max)

Sets the limit for the maximum number of rows that any ResultSet object generated by this Statementobject
can contain to the given number.

void setQueryTimeout(int seconds)

Sets the number of seconds the driver will wait for a Statement object to execute to the given number of seconds.

参考:http://docs.oracle.com/javase/8/docs/api/index.html

二、JDBC数据库应用源码实战

1.源码实现

任务:向连接的数据库中静态插入一条数据(‘dongguo‘,18,97).

  1. import java.sql.*;
  2. /*MySQL数据库编程
  3. * 实例(2):JDBC处理DML语句*/
  4. public class JDBC_DML {
  5. public static void main(String[] args) {
  6. //0.数据库URL、数据库账户名称与密码
  7. String url = "jdbc:mysql://localhost/jdbc_test_db";
  8. String DBusername="root";
  9. String DBpassword="896013";
  10. //1.加载数据库驱动程序到Java虚拟机
  11. try{
  12. Class.forName("com.mysql.jdbc.Driver"); //Driver为MySQL驱动类
  13. }catch(ClassNotFoundException e)
  14. {
  15. System.out.println("找不到数据库驱动程序类,加载驱动失败!");
  16. e.printStackTrace();    //将异常保存到log日志中
  17. }
  18. //2.创建Connection对象conn,表示连接到MySQL数据库
  19. Connection conn=null;
  20. Statement stmt=null;
  21. int i;
  22. try{
  23. conn=DriverManager.getConnection(url, DBusername, DBpassword);
  24. //3.获取能够实现执行SQL语句的Statement对象
  25. stmt=conn.createStatement();
  26. //4.执行SQL语句,根据返回的int类型数据判断是否插入成功
  27. i=stmt.executeUpdate("insert into test (name,age,score) values (‘dongguo‘,18,97)");
  28. if(i!=1)
  29. {
  30. System.out.println("更新数据库失败!");
  31. }
  32. }catch(SQLException se)
  33. {
  34. System.out.println("连接数据库失败");
  35. se.printStackTrace();
  36. }
  37. //6.关闭所有使用的JDBC对象,释放JDBC资源
  38. if(stmt!=null)  //关闭声明
  39. {
  40. try{
  41. stmt.close();
  42. }catch(SQLException e){
  43. e.printStackTrace();
  44. }
  45. }
  46. if(conn!=null)  //关闭数据库连接
  47. {
  48. try{
  49. conn.close();
  50. }catch(SQLException e){
  51. e.printStackTrace();
  52. }
  53. }
  54. }
  55. }

运行结果

(1)插入一条记录

stmt.executeUpdate("insert into test (name,age,score) values (‘dongguo‘,18,97)");

(2)删除一条记录

stmt.executeUpdate("delete from test where name=‘JJ‘");

2.JDBC应用向数据库动态插入数据

源码:通过命令行的参数作为插入的数据源,即动态更新数据库数据

  1. import java.sql.*;
  2. /*MySQL数据库编程
  3. * 实例(3):JDBC处理DML语句.通过命令行输入需要插入到数据库中的数据*/
  4. public class JDBC_DML2 {
  5. public static void main(String[] args) {
  6. if(args.length!=3)      //输入不正确,非正常退出
  7. {
  8. System.out.println( "Parament Error,Please Input Again!");
  9. System.exit(-1);
  10. }
  11. String nameParam=args[0];           //获取命令行第一个参数
  12. int ageParam=Integer.parseInt(args[1]); //获取命令行第二个参数,并转换为整型
  13. int scoreParam=Integer.parseInt(args[2]);//获取命令行第三个参数,并转换为整型
  14. //0.连接数据库相关参数
  15. String url="jdbc:mysql://localhost:3306/jdbc_test_db";  //数据库URL(资源定位唯一标识符)
  16. String DBusername="root";   //数据库用户名
  17. String DBpasswd="111111";   //数据库密码
  18. //1.加载数据库驱动,将Driver注册到DriverManager中
  19. try{
  20. Class.forName("com.mysql.jdbc.Driver");
  21. }catch(ClassNotFoundException e){
  22. e.printStackTrace();
  23. }
  24. //2.通过数据库URL连接到数据库
  25. Connection conn=null;
  26. Statement stmt=null;
  27. try{
  28. conn=DriverManager.getConnection(url, DBusername, DBpasswd);
  29. //3.获取Statement对象
  30. stmt=conn.createStatement();
  31. //4.获取命令参数,并调用Statement对象的executeUpdate更新数据库
  32. String sql="insert into test(name,age,score) values(‘"+nameParam+"‘,"+ageParam+","+scoreParam+")";
  33. System.out.println(sql);//调试
  34. stmt.executeUpdate(sql);
  35. }catch(SQLException e){
  36. e.printStackTrace();
  37. }
  38. //5.释放JDBC资源
  39. if(stmt!=null)      //关闭声明
  40. {
  41. try{
  42. stmt.close();
  43. }catch(SQLException e){
  44. e.printStackTrace();
  45. }
  46. }
  47. if(conn!=null)      //关闭连接
  48. {
  49. try{
  50. conn.close();
  51. }catch(SQLException e){
  52. e.printStackTrace();
  53. }
  54. }
  55. }
  56. }

(1)设置命令行参数

右击工程->Run as->Open Run Dialog->Main Class选择"JDBC_DML2"

(2)运行结果

(3)遇到的错误与调试

输入参数运行Java应用后,出现SQLException异常。我们可以通过打印输入的插入sql语句,发现程序没有获取到命令行传入的参数,另外,vaules拼写错误,找到原因。

修改:sql="insert into test(name,age,score) values(‘"+nameParam+"‘,"+ageParam+","+scoreParam+")";即可

时间: 2024-08-15 04:27:49

03.JDBC数据库编程之处理DML语句的相关文章

JDBC数据库编程

***********************************************声明****************************************************** 原创作品,出自 "晓风残月xj" 博客,欢迎转载,转载时请务必注明出处(http://blog.csdn.net/xiaofengcanyuexj). 由于各种原因,可能存在诸多不足,欢迎斧正! *******************************************

JDBC数据库编程之数据库连接及执行查询语句

jdbc:全称java Database Connectivity  java数据库连接. j2ee一部分 起初,基于某数据库产品的开发,必须了解某数据库的api.通过c/c++直接访问某数据库的接口来编程.但无法实现跨数据库平台开发. 后来,通过统一数据库接口实现跨平台开发,例如odbc,ado.net.而jdbc是java访问数据库平台的统一接口. jdbc在不同数据库平台的移植不是完全的. jdbc对于java程序一端,是统一的一个接口.对于数据库产品连接端,不是统一的.(由厂商提供) s

JDBC数据库编程之数据库连接及操作数据

jdbc:全称java Database Connectivity  java数据库连接. 起初,基于某数据库产品的开发,必须了解某数据库的api.通过c/c++直接访问某数据库的接口来编程.但无法实现跨数据库平台开发. 后来,通过统一数据库接口实现跨平台开发,例如odbc,ado.net.而jdbc是java访问数据库平台的统一接口. jdbc在不同数据库平台的移植不是完全的. jdbc对于java程序一端,是统一的一个接口.对于数据库产品连接端,不是统一的.(由厂商提供) sql六大语句:

JDBC数据库编程常用接口(转)

JDBC的全称是Java DataBase Connectivity,是一套面向对象的应用程序接口(API),制定了统一的访问各种关系数据库的标准接口,为各个数据库厂商提供了标准接口的实现.这东西能够实现软件的扩平台性.JDBC是一种底层API,在访问数据库是需要在业务逻辑中直接嵌入SQL语句.JDBC不能够直接访问数据库,必须依赖数据库厂商提供的JDBC驱动程序完成以下三步工作1.同数据库建立连接:2.向数据库发送SQL语句:3.处理从数据库返回的结果. *JDBC驱动 1.JDBC-ODBC

JDBC数据库编程基本流程

1.加载驱动类 Class.forName("");   2.创建数据库连接 Connection con = DriverManager.getConnection(url, user, password);   3.创建Statement对象 Statement stat = con.createStatement();   4.数据库操作 stat.executeUpdate("SQL更新语句"); ResultSet rs = stat.execulteQu

【C/C++学院】(21)Mysql数据库编程--开发简介/SQL语句

一.mysql安装与管理 tar 解包的命令 tar xvf 包文件名称 tar 打包的命令 tar cvf 要打包的文件名称 rpm卸载命令 rpm -e 包名称 rpm -e 包名称 --nodeps 强行卸载,不检查包的依赖关系 rpm安装包命令 rpm -ivh 包名称 二.字符集 1.首先操作系统的字符集为utf8 查看操作系统字符集命令 locale 2.创建数据库的时候使用CHARACTER SET utf8;指定字符集为utf8 3.设置mysql client字符集 SET N

JAVA数据库编程(JDBC技术)-入门笔记

本菜鸟才介入Java,我现在不急着去看那些基本的语法或者一些Java里面的版本的特征或者是一些晋级的知识,因为有一点.Net的OOP编程思想,所以对于Java的这些语法以及什么的在用到的时候在去发现学习一下.我现在很迫不及待用JAVA想来实现以下对数据库的增删改查.想实现就来看Java是怎么操作数据库的,回想下.Net里你可能会配置web.Config,或者你去写一些DBhelper类然后调用里面的自己定义的一些增删改查的方法,更或者你去配一些数据控件等等往往发现操作基本都是一体化的简单.现在面

Java数据库编程(JDBC)

一.使用Java对数据库的操作步骤: 1.根据应用程序的数据库类型,加载相应的驱动: 2.连接到数据库,得到Connection对象: 3.通过Connection创建Statement对象: 4.使用Statement对象提交SQL语句: 5.操作结果集 6.回收数据库资源 7.关闭连接 package com.lovo.jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLExc

jdbc java数据库连接 3)Statement接口之执行DDL和DML语句的简化

上一章的代码中,可以发现,jdbc执行DDL和DML有几个步骤都是一样的: 1)执行语句开始时,创建驱动注册对象.获取连接的数据库对象.创建Statement对象 1 // 创建驱动注册对象 2 Class.forName("com.mysql.jdbc.Driver"); 3 4 // 获取连接的数据库对象 5 Connection conn = DriverManager.getConnection(url, user, 6 password); 7 8 // 创建Statemen