这几天刚做完数据库的课程设计,来稍微总结一下如何通过jdbc访问sql server数据库进行简单的增删改查操作。在连接之前,需要简单地配置一下,包括下载对应jdk版本的驱动,设置环境变量等等。相关配置可参考博客: https://blog.csdn.net/rebekahq/article/details/78691343

我重点总结一下如何在java代码里连接数据库,进行增删改查。先贴一段用来查询数据库的代码实例:

1、查询

 package com.ph;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class Test1 { public static void main(String[]args) {
PreparedStatement ps=null;
Connection ct=null;
ResultSet rs=null;
try {
//1.加载驱动
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
//2.得到链接 127.0.0.1:1433
ct=DriverManager.getConnection
("jdbc:sqlserver://127.0.0.1:1433;databaseName=Mytest","sa","123456"); ps=ct.prepareStatement("select * from course");
rs=ps.executeQuery();
while(rs.next()) {
String cno=rs.getString(1);
String cname=rs.getString(2);
String tno=rs.getString(3);
System.out.println("cno "+cno+" cname "+cname+" tno "+tno);
}
}catch(Exception e) {
e.printStackTrace();
}finally {
try {
if(rs != null)rs.close();
if(ps != null)ps.close();
if(ct != null)ct.close();
}catch(Exception e) {
e.printStackTrace();
}
}
}
}

分析一下代码:

(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、修改

 PreparedStatement ps=null;
Connection ct=null;
ResultSet rs=null;
try {
//1.加载驱动
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
//2.得到链接 127.0.0.1:1433
ct=DriverManager.getConnection
("jdbc:sqlserver://127.0.0.1:1433;databaseName=student","sa","123456"); String sql="update s set sname=?,sex=?,age=?,saddress=?,"
+ "spnumber=?,dno=?,political=? where sno=?";
ps=ct.prepareStatement(sql);
//给?赋值
ps.setString(1, jtf2.getText());
ps.setString(2, jtf3.getText());
ps.setString(3, jtf4.getText());
ps.setString(4, jtf5.getText());
ps.setString(5, jtf6.getText());
ps.setString(6, jtf7.getText());
ps.setString(7, jtf8.getText());
ps.setString(8, jtf1.getText()); ps.executeUpdate();
this.dispose();
}catch(Exception e) {
e.printStackTrace();
}finally {
try {
if(rs!=null)rs.close();
if(ps!=null)ps.close();
if(ct!=null)ct.close();
}catch(Exception e) {
e.printStackTrace();
}
}

这个是所做项目中截取的,getText( )方法是用来获取输入框内的内容的, ps.setString(  i , String   )前一个参数对应着sql语句中第 i个问号(?),而String可以理解要给问号(?)赋的值。当然,不一定是String类型,也可以是其他的类型。

3、删除

 public class DeleData {

     PreparedStatement ps=null;
Connection ct=null;
ResultSet rs=null;
public DeleData(String sId){
try {
//1.加载驱动
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
//2.得到链接 127.0.0.1:1433
ct=DriverManager.getConnection
("jdbc:sqlserver://127.0.0.1:1433;databaseName=student","sa","123456"); ps=ct.prepareStatement("delete from s where sno=?");
ps.setString(1, sId);
ps.executeUpdate(); }catch(Exception e) {
e.printStackTrace();
}finally {
try {
if(ps!=null) ps.close();
if(ps!=null) ct.close();
}catch(Exception e) {
e.printStackTrace();
}
}
} }

换汤不换药,看懂第一个,下面的也该会了。

4、添加

     public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
if(arg0.getSource()==jb1){
PreparedStatement ps=null;
Connection ct=null;
ResultSet rs=null;
try {
//1.加载驱动
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
//2.得到链接 127.0.0.1:1433
ct=DriverManager.getConnection
("jdbc:sqlserver://127.0.0.1:1433;databaseName=student","sa","123456"); String sql="insert into s values(?,?,?,?,?,?,?,?)";
ps=ct.prepareStatement(sql);
ps.setString(1, jtf1.getText());
ps.setString(2, jtf2.getText());
ps.setString(3, jtf3.getText());
ps.setString(4, jtf4.getText());
ps.setString(5, jtf5.getText());
ps.setString(6, jtf6.getText());
ps.setString(7, jtf7.getText());
ps.setString(8, jtf8.getText()); ps.executeUpdate();
this.dispose();
}catch(Exception e) {
e.printStackTrace();
}finally {
try {
if(rs!=null)rs.close();
if(ps!=null)ps.close();
if(ct!=null)ct.close();
}catch(Exception e) {
e.printStackTrace();
}
}
}
}

以上代码大多截取自最近做的学生档案管理系统。。。也就是数据库课程设计,用swing写了一个小界面,也了解了如何通过jdbc连接访问SQLserver,在eclipse中,对数据库进行增删改查操作。项目虽小,收获还是挺大的,开森(/≧▽≦)/。

如有错误,欢迎批评指导!

jdbc连接sql server2017进行简单的增、删、改、查操作的更多相关文章

  1. Android SQLite(1)简单示例-增,删,改,查

    1.主要核心类,Sqlite编程要继承SQLiteOpenHelper import android.content.Context; import android.database.sqlite.S ...

  2. 怎样从C#中打开数据库并进行 增 删 改 查 操作

    首先 在C#中引用数据库的操作! (因为我们用的是SQLserver数据库,所以是SqlClient) using System.Data.SqlClient; 1:要实现对数据库的操作,我们必须先登 ...

  3. iOS FMDB的使用(增,删,改,查,sqlite存取图片)

    iOS FMDB的使用(增,删,改,查,sqlite存取图片) 在上一篇博客我对sqlite的基本使用进行了详细介绍... 但是在实际开发中原生使用的频率是很少的... 这篇博客我将会较全面的介绍FM ...

  4. 用JDBC连接SQL Server2017数据库

    用JDBC连接SQL Server2017数据库 2018年03月26日 17:40:47 yasinzhang 阅读数:8346 安装完SQL server2017之后,选择SQL 身份验证登录,可 ...

  5. 好用的SQL TVP~~独家赠送[增-删-改-查]的例子

    以前总是追求新东西,发现基础才是最重要的,今年主要的目标是精通SQL查询和SQL性能优化.  本系列主要是针对T-SQL的总结. [T-SQL基础]01.单表查询-几道sql查询题 [T-SQL基础] ...

  6. iOS sqlite3 的基本使用(增 删 改 查)

    iOS sqlite3 的基本使用(增 删 改 查) 这篇博客不会讲述太多sql语言,目的重在实现sqlite3的一些基本操作. 例:增 删 改 查 如果想了解更多的sql语言可以利用强大的互联网. ...

  7. django ajax增 删 改 查

    具于django ajax实现增 删 改 查功能 代码示例: 代码: urls.py from django.conf.urls import url from django.contrib impo ...

  8. ADO.NET 增 删 改 查

    ADO.NET:(数据访问技术)就是将C#和MSSQL连接起来的一个纽带 可以通过ADO.NET将内存中的临时数据写入到数据库中 也可以将数据库中的数据提取到内存中供程序调用 ADO.NET所有数据访 ...

  9. MVC EF 增 删 改 查

    using System;using System.Collections.Generic;using System.Linq;using System.Web;//using System.Data ...

随机推荐

  1. Node.js笔记07——不使用generator自定义一个项目,深入了解项目结构

    一.初始化项目 新建项目 git init manager 新建view文件夹,建几个静态文件夹 新建app.js 快速初始化项目依赖 npm init -y 安装express npm instal ...

  2. 四、MapReduce 基础

    是一个并行计算框架(计算的数据源比较广泛-HDFS.RDBMS.NoSQL),Hadoop的 MR模块充分利用了HDFS中所有数据节点(datanode)所在机器的内存.CUP以及少量磁盘完成对大数据 ...

  3. JAVA给你讲它的故事

    计算机语言如果你将它当做一个产品,就像我们平时用的电视机.剃须刀.电脑.手机等, 他的发展也是有规律的. 任何一个产品的发展规律都是:向着人更加容易使用.功能越来越强大的方向发展. 那么,我们的计算机 ...

  4. idea 聚合项目里如果子项目引用不到父类的maven应用

    idea 聚合项目里如果子项目引用不到父类的maven应用,可以点看子类pom.xml文件,然后右键---->maven----->Reimport即可 点击右边子项目的maven---& ...

  5. LogViewer超大文本浏览工具

    官方下载 LogViewer 是一款简单好用的log日志文件查看工具.您想要查看log日志吗?那么不妨来看看这款LogViewer .该款工具可以在短短数秒内打开上G的LOG文件,支持高亮某行文字(例 ...

  6. jquery的JSON字符串处理、单引号双引号的转换

    1.jquery的JSON字符串处理 var pwdlevel_val = "{"minLength":1,"maxLength":20," ...

  7. PHP封装CURL

    CURL是一个非常强大的开源库,支持很多协议,包括HTTP.FTP.TELNET等,我们使用它来发送HTTP请求.它给我 们带来的好处是可以通过灵活的选项设置不同的HTTP协议参数,并且支持HTTPS ...

  8. Oracle之单表查询及常用函数

    1.语法: select 字段列表 from 表名 [where 查询条件] [group by 分组] [having 分组条件] [order by 排序] select * 代表查询所有的字段 ...

  9. 流程控制之--if。

    假如把写程序比做走路,那我们到现在为止,一直走的都是直路,还没遇到过分叉口,想象现实中,你遇到了分叉口,然后你决定往哪拐必然是有所动机的.你要判断那条岔路是你真正要走的路,如果我们想让程序也能处理这样 ...

  10. java 优化版 用接口实现(输入两个数选择实现加减乘除运算)

    //利用java接口实现计算器,实现加减乘除的功能 import java.util.Scanner; class Test { public static void main(String[] ar ...