JDBC增删改查存储过程之类

  1 //JDBC连接数据库
  2 //先在项目中引入mysql驱动jar包,网上下载有,之后才能进行连接
  3 String className = "com.mysql.jdbc.Driver";
  4 //或者 new com.mysql.jdbc.Driver();  效果一样
  5 //每个URL是不同的。最后的格式是编码问题,容易导致java向mysql插入中文时,mysql数据库中显示是?问号
  6 String url = "jdbc:mysql://localhost/db_stu?useUnicode=true&characterEncoding=utf8";
  7 String user = "root";
  8 String password ="";
  9 Connection conn = null;
 10 Statement stmt = null;
 11     try
 12     {
 13         Class.forName(className);
 14         conn = DriverManager.getConnection(url, user, password);
 15         stmt = conn.createStatement();
 16         String sql = "insert into db_student values (1010,‘张三‘,‘23‘,‘男‘,‘BeiJing‘)";
 17         //返回SQL语句影响的行数
 18         int i = stmt.executeUpdate(sql);
 19         System.out.println("change :" + i);
 20         System.out.println("all is good.");
 21     }
 22     catch(Exception e)
 23     {
 24         e.printStackTrace();
 25     }
 26     finally
 27     {
 28         try
 29         {
 30             if(stmt != null)
 31             {
 32                 stmt.close();
 33                 stmt = null;
 34             }
 35             if(conn != null)
 36             {
 37                 conn.close();
 38                 conn = null;
 39             }
 40         }
 41         catch(Exception e)
 42         {
 43             e.printStackTrace();
 44         }
 45     }
 46
 47
 48 //JDBC使用PreparedStatement进行设置参数
 49 Connection conn = null;
 50 PreparedStatement pstmt = null;
 51 Class.forName(className);
 52 conn = DriverManager.getConnection(url, user, password);
 53 //插入参数是未知的,使用?
 54 pstmt = conn.prepareStatement("insert into db_student values (?,?,?,?,?)");
 55 //设置参数
 56 pstmt.setInt(1, 1004);
 57 pstmt.setString(2, "Fuck");
 58 pstmt.setString(3,"22");
 59 pstmt.setString(4, "man");
 60 pstmt.setString(5, "TianJin");
 61 pstmt.executeUpdate();
 62 //JDBC使用存储过程
 63 Connection conn = null;
 64 CallableStatement cstmt = null;
 65 Class.forName(className);
 66 conn = DriverManager.getConnection(url, user, password);
 67 //处理存储过程,p(?,?,?,?)是存储过程,第一个,第二个是输入参数,第三个是输出参数,第四个即时输入参数又是输出参数
 68 cstmt = conn.prepareCall("call p(?,?,?,?)");
 69 //指定第三个,第四个是输出参数
 70 cstmt.registerOutParameter(3, Types.INTEGER);
 71 cstmt.registerOutParameter(4, Types.INTEGER);
 72 //设置第一,第二,第四参数
 73 cstmt.setInt(1, 3);
 74 cstmt.setInt(2, 4);
 75 cstmt.setInt(4, 5);
 76 cstmt.execute();
 77 System.out.println(cstmt.getInt(3));
 78 System.out.println(cstmt.getInt(4));
 79 //JDBC进行批处理,一个SQL语句需要一个Statement,使用批处理减少使用Statement
 80 //JDBC的PreparedStatement也可以执行批处理
 81 Statement stmt=conn.CreateStatement();
 82 stmt.addBatch("insert into db_student values (1001,‘jack‘,22)");
 83 stmt.addBatch("insert into db_student values (1001,‘jack‘,22)");
 84 stmt.addBatch("insert into db_student values (1001,‘jack‘,22)");
 85 stmt.executeBatch();
 86 stmt.close();
 87 //JDBC处理事务,默认的SQL语句是一个个提交,我们更改后,变成一次性提交
 88 try
 89 {
 90     conn.setAutoComit(false);
 91     Statement stmt=conn.CreateStatement();
 92     stmt.addBatch("insert into db_student values (1001,‘jack‘,22)");
 93     stmt.addBatch("insert into db_student values (1001,‘jack‘,22)");
 94     stmt.addBatch("insert into db_student values (1001,‘jack‘,22)");
 95     stmt.executeBatch();
 96     //JDBC进行提交
 97     conn.comit();
 98     //将原来的设置改回去
 99     conn.setAutoComit(true);
100     stmt.close();
101 }
102 catch(ClassNotFoundException e)
103 {
104     e.printStackTrace();
105 }
106 catch(SQLException e)
107 {
108     e.printStackTrace();
109     try
110     {
111         if(conn != null)
112         {
113             conn.rollBack();
114             conn.setAutoComit(true);
115         }
116     }
117     catch(SQLException e)
118     {
119         e.printStackTrace();
120     }
121 }
122 finally
123 {
124     try
125     {
126         if(stmt != null)
127         {
128             stmt.close();
129             stmt = null;
130         }
131         if(conn != null)
132         {
133             conn.close();
134             conn = null;
135         }
136     }
137     catch(SQLException e)
138     {
139         e.printStackTrace();
140     }
141 }
142
143
144 //JDBC可滚动的结果集
145 Class.forName(className);
146 conn = DriverManager.getConnection(url, user, password);
147 //结果集可以滚动来回移动,第一个参数是对于滚动不敏感,第二个参数是并发只读
148 stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,  ResultSet.CONCUR_READ_ONLY);
149 rs = stmt.executeQuery("select * from db_student");
150 rs.next();
151 //以int型取出第一个字段
152 System.out.println(rs.getInt(1));
153 //跳到最后一行
154 rs.last();
155 //以String型取出第二个字段
156 System.out.println(rs.getString(2));
157 //是否是最后一行
158 System.out.println(rs.isLast());
159 //是否是倒数第二行
160 System.out.println(rs.isAfterLast());
161 //这是第几行
162 System.out.println(rs.getRow());
163 //整体前进一行
164 rs.previous();
165 System.out.println(rs.getString(2));
166 //定位到第二行
167 rs.absolute(2);
168 System.out.println(rs.getInt(1));
169
170 //JDBC可更新的结果集
171 Class.forName(className);
172 conn = DriverManager.getConnection(url, user, password);
173 //对回滚不敏感,并发是处理,即ResultSet再内存中修改,然后同步数据库修改
174 stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
175 rs = stmt.executeQuery("select * from db_student");
176 rs.next();
177 //更新一行数据
178 rs.updateString(4, "man");
179 rs.updateRow();
180 //插入新行
181 rs.moveToInsertRow();
182 rs.updateInt(1, 1007);
183 rs.updateString(2, "FUCK");
184 rs.updateString(3, "22");
185 rs.updateString(4, "man");
186 rs.updateString(5, "hennan");
187 rs.insertRow();
188 rs.moveToCurrentRow();
189 //定位到第五行,然后删除
190 rs.absolute(6);
191 rs.deleteRow();
192
193 //DateSource & RowSet
194 /*
195 DateSource
196     DriverManager的替代
197     连接池实现
198     分布式实现
199 RowSet
200     新的ResultSet
201     从ResultSet继承
202     支持断开的结果集
203     支持JavaBean标准
204 */
时间: 2024-12-28 20:46:38

JDBC增删改查存储过程之类的相关文章

一个初学者对于jdbc增删改查的一点看法和困惑

我们今周学习了 jdbc的增删改查,总之是各种恍然大悟然后又接着陷入新一轮的苦恼中(相信你们一定深有体会),由于本人的java基础较差,所以是在实践中是各种稀奇古怪的错误频发,接下来我列举几个这几天我犯得让我的老师哭笑不得的错误. 首先是错误:com.microsoft.sqlserver.jdbc.SQLServerException: 已生成用于更新的结果集. 这是我运行我的删除操作之后报的错误,结果是原表无变化,经打断点检查id已经上传,换句话来说程序没有问题,各位小伙伴们能从这只言片语中

jdbc增删改查,利用反射查询

整理自http://blog.csdn.net/yanzi1225627/article/details/26950615,谢谢作者! 本文我的爱点是: 1.利用反射实现数据库数据查询 2.编写一个sql语句,其中的参数用?来代替,然后将参数写到List里 例如使用例子: 1 String sql = "delete from userinfo where username = ?"; 2 List<Object> params = new ArrayList<Obj

JDBC增删改查和查唯一的完整代码

第一部分代码(实体类) package com.wf.entity; public class Hehe{ private int hehe_id; private String hehe_name; private String hehe_gender; public int getHehe_id(){ return hehe_id; } public void setHehe_id(int heheId){ hehe_id=heheId; } public String getHehe_na

Dapper逆天入门~强类型,动态类型,多映射,多返回值,增删改查+存储过程案例演示

Dapper的牛逼就不扯蛋了,答应群友做个入门Demo的,现有园友需要,那么公开分享一下: 完整Demo:http://pan.baidu.com/s/1i3TcEzj 注 意 事 项:http://www.cnblogs.com/dunitian/p/5221058.html 平台之大势何人能挡? 带着你的Net飞奔吧! http://www.cnblogs.com/dunitian/p/4822808.html#skill 先安装一下Dapper(建议用nuget包来管理) 连接字符串: s

商城项目整理(三)JDBC增删改查

商品表的增加,修改,删除,订单表的增加,确认,用户表的查看,日志表的增加,查看 商品表建表语句: 1 create table TEST.GOODS_TABLE 2 ( 3 gid NUMBER not null, 4 gname VARCHAR2(90), 5 gdetails CLOB, 6 gpicture VARCHAR2(100), 7 gprice NUMBER, 8 gleixing NUMBER, 9 gpinpai VARCHAR2(20) 10 ) 11 tablespace

JDBC 增删改查

package jdbcstu; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class JdbcTest2 { public static void main(String[] args) { insert(); } public static Connection getConnection(){

JDBC增删改查简单测试

首先编写一个entity以便与数据库表文件相对应 lyTable.java public class LyTable implements java.io.Serializable { private Integer id; private Integer userId; private Date date; private String title; private String content; public Integer getId() { return id; } public voi

增删改查存储过程

select * from UserInfo ---------------------------------添加存储过程------------------------------if OBJECT_ID('P_add') is not nulldrop proc P_addgocreate proc P_add--参数@UserName varchar(100),@UserPwd varchar(100),@UserSex int,@UserDate datetime,@msg varch

通过JDBC进行简单的增删改查

通过JDBC进行简单的增删改查(以MySQL为例) 目录 前言:什么是JDBC 一.准备工作(一):MySQL安装配置和基础学习 二.准备工作(二):下载数据库对应的jar包并导入 三.JDBC基本操作 (1)定义记录的类(可选) (2)连接的获取 (3)insert (4)update (5)select (6)delete 四.测试 五.代码分析 六.思考问题 前言:什么是JDBC 维基百科的简介: Java 数据库连接,(Java Database Connectivity,简称JDBC)