jdbc连接sql server2017进行简单的增、删、改、…
2018-06-18 00:21:21来源:未知 阅读 ()
这几天刚做完数据库的课程设计,来稍微总结一下如何通过jdbc访问sql server数据库进行简单的增删改查操作。在连接之前,需要简单地配置一下,包括下载对应jdk版本的驱动,设置环境变量等等。相关配置可参考博客: https://blog.csdn.net/rebekahq/article/details/78691343
我重点总结一下如何在java代码里连接数据库,进行增删改查。先贴一段用来查询数据库的代码实例:
1、查询
1 package com.ph;
2 import java.sql.Connection;
3 import java.sql.DriverManager;
4 import java.sql.PreparedStatement;
5 import java.sql.ResultSet;
6 public class Test1 {
7
8 public static void main(String[]args) {
9 PreparedStatement ps=null;
10 Connection ct=null;
11 ResultSet rs=null;
12 try {
13 //1.加载驱动
14 Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
15 //2.得到链接 127.0.0.1:1433
16 ct=DriverManager.getConnection
17 ("jdbc:sqlserver://127.0.0.1:1433;databaseName=Mytest","sa","123456");
18
19 ps=ct.prepareStatement("select * from course");
20 rs=ps.executeQuery();
21 while(rs.next()) {
22 String cno=rs.getString(1);
23 String cname=rs.getString(2);
24 String tno=rs.getString(3);
25 System.out.println("cno "+cno+" cname "+cname+" tno "+tno);
26 }
27 }catch(Exception e) {
28 e.printStackTrace();
29 }finally {
30 try {
31 if(rs != null)rs.close();
32 if(ps != null)ps.close();
33 if(ct != null)ct.close();
34 }catch(Exception e) {
35 e.printStackTrace();
36 }
37 }
38 }
39 }
分析一下代码:
(1)、Class.forName() 如代码中的注释,第14行一整行代码是用来加载sql server驱动的。那 Class.forName() 这个函数是用来干嘛的呢,它的作用是:用来初始化给定的类,即引号里面的类。如果换一种写法:DriverManger.registerDriver(new Driver()); 更为直接点,直接初始化,也是可以的。对Class.forName()这个函数感兴趣的,可以参考
http://www.jb51.net/article/117468.htm
(2)、DriverManger.getConnection() DriverManger这个类,查API就可以知道,是用来管理jdbc驱动的基本服务。如果把参数加上,就是:
static Connection DriverManger.getConnecttion(String url, String user, String password)
返回类型是Connection,其中的参数分别为:绝对路径、用户名、密码。最好使用windows加Sql server混合验证,在数据库设置一下账号和密码,否则可能连不上。
绝对路径是指本地数据库的绝对路径:jdbc:sqlserver://127.0.0.1:1433 其中包含了ip地址,对应的端口(这也是使用前必须设置好的,前面的链接有详细教程)。
(3)、Connection接口介绍。 上一个方法的返回值,是Connection接口的一个实例对象,而Connection接口中的函数可以与连接的数据库“对话”,注意:sql语句就是通过该接口的函数执行的。例如上述代码中的:ps=ct.prepareStatement("select * from course"); Connection中的getMetaData方法还可以获取已连接数据库所支持的sql语法、存储过程、此连接功能等信息。下面介绍PreparedStatement对象。
(4)、PreparedStatement对象。上条方法的返回值ps即为其实例,这个类与执行sql语句的效率有关。Connection中的sql语句可以预编译保存在PreparedStatement对象中(如ps),当需要执行该语句时,直接调用ps,不需要重复地编译select语句,提高了效率。
(5)、ResultSet。它用来承接PreparedStatement对象查询到的结果,可以通过该对象中的方法来访问数据库。如代码中的循环所示,一开始rs光标停在第一行的前面(注意,并非第一行),当第一次执行rs.next()函数时,光标才会到第一行,用一个while循环就可以遍历整个表的行。而rs.getString(index)是用来返回第index列的值,是横向的。注意:第一列的index就是1,而不是0,和数组下标有所区别。
(6)、整个代码用try catch包起来,并且记得调用close方法依次关闭引用,做好善后工作,防止内存泄漏。(顺序:后使用的率先关闭)
以上就是简单的遍历查询方法,可以根据具体情况修改 sql语句、是否使用循环、以及循环跳出的条件。
2、修改
1 PreparedStatement ps=null;
2 Connection ct=null;
3 ResultSet rs=null;
4 try {
5 //1.加载驱动
6 Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
7 //2.得到链接 127.0.0.1:1433
8 ct=DriverManager.getConnection
9 ("jdbc:sqlserver://127.0.0.1:1433;databaseName=student","sa","123456");
10
11 String sql="update s set sname=?,sex=?,age=?,saddress=?,"
12 + "spnumber=?,dno=?,political=? where sno=?";
13 ps=ct.prepareStatement(sql);
14 //给?赋值
15 ps.setString(1, jtf2.getText());
16 ps.setString(2, jtf3.getText());
17 ps.setString(3, jtf4.getText());
18 ps.setString(4, jtf5.getText());
19 ps.setString(5, jtf6.getText());
20 ps.setString(6, jtf7.getText());
21 ps.setString(7, jtf8.getText());
22 ps.setString(8, jtf1.getText());
23
24 ps.executeUpdate();
25 this.dispose();
26 }catch(Exception e) {
27 e.printStackTrace();
28 }finally {
29 try {
30 if(rs!=null)rs.close();
31 if(ps!=null)ps.close();
32 if(ct!=null)ct.close();
33 }catch(Exception e) {
34 e.printStackTrace();
35 }
36 }
这个是所做项目中截取的,getText( )方法是用来获取输入框内的内容的, ps.setString( i , String )前一个参数对应着sql语句中第 i个问号(?),而String可以理解要给问号(?)赋的值。当然,不一定是String类型,也可以是其他的类型。
3、删除
1 public class DeleData {
2
3 PreparedStatement ps=null;
4 Connection ct=null;
5 ResultSet rs=null;
6 public DeleData(String sId){
7 try {
8 //1.加载驱动
9 Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
10 //2.得到链接 127.0.0.1:1433
11 ct=DriverManager.getConnection
12 ("jdbc:sqlserver://127.0.0.1:1433;databaseName=student","sa","123456");
13
14 ps=ct.prepareStatement("delete from s where sno=?");
15 ps.setString(1, sId);
16 ps.executeUpdate();
17
18 }catch(Exception e) {
19 e.printStackTrace();
20 }finally {
21 try {
22 if(ps!=null) ps.close();
23 if(ps!=null) ct.close();
24 }catch(Exception e) {
25 e.printStackTrace();
26 }
27 }
28 }
29
30 }
换汤不换药,看懂第一个,下面的也该会了。
4、添加
1 public void actionPerformed(ActionEvent arg0) {
2 // TODO Auto-generated method stub
3 if(arg0.getSource()==jb1){
4 PreparedStatement ps=null;
5 Connection ct=null;
6 ResultSet rs=null;
7 try {
8 //1.加载驱动
9 Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
10 //2.得到链接 127.0.0.1:1433
11 ct=DriverManager.getConnection
12 ("jdbc:sqlserver://127.0.0.1:1433;databaseName=student","sa","123456");
13
14 String sql="insert into s values(?,?,?,?,?,?,?,?)";
15 ps=ct.prepareStatement(sql);
16 ps.setString(1, jtf1.getText());
17 ps.setString(2, jtf2.getText());
18 ps.setString(3, jtf3.getText());
19 ps.setString(4, jtf4.getText());
20 ps.setString(5, jtf5.getText());
21 ps.setString(6, jtf6.getText());
22 ps.setString(7, jtf7.getText());
23 ps.setString(8, jtf8.getText());
24
25 ps.executeUpdate();
26 this.dispose();
27 }catch(Exception e) {
28 e.printStackTrace();
29 }finally {
30 try {
31 if(rs!=null)rs.close();
32 if(ps!=null)ps.close();
33 if(ct!=null)ct.close();
34 }catch(Exception e) {
35 e.printStackTrace();
36 }
37 }
38 }
39 }
以上代码大多截取自最近做的学生档案管理系统。。。也就是数据库课程设计,用swing写了一个小界面,也了解了如何通过jdbc连接访问SQLserver,在eclipse中,对数据库进行增删改查操作。项目虽小,收获还是挺大的,开森(/≧▽≦)/。
如有错误,欢迎批评指导!
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- SpringBoot 2.3 整合最新版 ShardingJdbc + Druid + MyBatis 2020-06-11
- JSP+SSH+Mysql+DBCP实现的租车系统 2020-06-09
- JSP+Structs+JDBC+mysql实现的诚欣电子商城 2020-06-08
- Spring11_JdbcTemplate 2020-06-07
- Caused by: java.sql.SQLSyntaxErrorException: Unknown col 2020-06-07
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash