java servlet与sql server
2016-07-06 15:35
387 查看
java中使用servlet中sql的链接
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); String url = ""; Connection conn = null; Statement stmt = null; url = "jdbc:sqlserver://localhost:1034;DatabaseName=ERPDB_2016S"; conn = DriverManager.getConnection(url,"sa","123"); stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
sql使用的是SQL Server 2012,使用前需要先下载sqljdbc4.jar并且配置好classpath,然后在写代码的时候需要导入java.sql.*中的相关类。
使用class.forname的时候需要注意com.microsoft.sqlserver.jdbc这个路径是需要自己解压sqljdbc4.jar之后查看一遍的,不同版本可能不一样。
url = "jdbc:sqlserver://localhost:1034;DatabaseName=ERPDB_2016S";这个语句中jdbc:sqlserver是协议,网上查到的这个语句大多写的是jdbc:microsoft:sqlserver,然而加上了我在使用时并不奏效,删去了microsoft之后才能正常使用,原因未知。另一点需要提到的是localhost:1034中1034是数据库端口,虽然数据库的端口默认是1433,我在使用时同样不奏效,反复寻找后使用了在sql配置工具-SQL SERVER网络配置-TCP/Ip-属性-IP地址-IPALL中的端口才能正确使用,原因可能是虽然默认端口是1433,但是在使用TCP/Ip连接时使用的端口并不是默认端口。
conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
参数1:
TYPE_SCROLL_SENSITIVE: 双向滚动
ResultSet.TYPE_FORWORD_ONLY:只向前滚动(Result.first()将会不起作用)
ResultSet.TYPE_SCROLL_INSENSITIVE:双向滚动但若数据库内容更新不会及时更新在ResultSet中(未验证)
参数2:
ResultSet.CONCUR_UPDATABLE:可更新
ResultSet.CONCUR_CONCUR_READ_ONLY: 只读
数据库的相关信息可以写在Web.xml中,然后可以通过重写HttpServLet中的Init函数加载配置(未尝试过)
sql的查询和更新:
查询语句ResultSet res = stmt.executeQuery(sql);
得到总列数:
ResultSetMetaData md = res.getResultSetMetaData(); int colNum = md.getColumnNum();
得到总行数:
//createStatement时一定要设置参数TYPE_SCORLL_SENSITIVE res.last(); int RowNum = md.getRowNum(); res.first();
若是删除或者插入语句
try { stmt.executeUpdate(sql); System.out.println("suc"); } catch(Exception e) { System.out.println("fail"); e.printStackTrace(); }
这里的代码均供理解用,可能会有拼写等错误,复制粘贴可能会不好用。
相关文章推荐
- maven学习笔记-基础
- java链表之--单向循环链表
- Java之定时任务详解
- 深入分析Java ClassLoader原理
- java加解密
- SpringMVC 数据校验
- 理解Java对象序列化
- java通过二分法对数组进行高效查找及插入操作
- 0004-java对象的序列化和反序列化
- Java设计模式之工厂方法模式
- Java实现插入排序算法
- java链表之--java双向链表的增删改查
- JAVA字符串格式化-String.format()的使用
- 跟我学Dubbo系列之Java SPI机制简介
- 华为机试---迷宫问题
- Quartz集成springMVC 的方案二(持久化任务、集群和分布式)
- 【转】Java常见内存溢出异常分析
- 一段JAVA线程池的设置引发的血案
- Java中间件
- 使用Eclipse MAT查找内存泄漏工具介绍