编译器:
eclipise
JDK:8
首先你的电脑上需要已经安装好了SQL server 2008。
以上是我连接的时候所用的编译器和JDK版本。
那么接下来进入正题:
第一步:在微软官网下载一个JDBC驱动程序。
也可以在这里下载:
链接:https://pan.baidu.com/s/1oIFzh2EKJx7116fNeFk6bw
提取码:ccif
上面的驱动程序就是我用的
这个链接里也包括了程序后期用到的数据库,如果你只是想连接验证一下,也可以免去了创建数据库的步骤!
第二步:双击解压到随意的路径下。
箭头所指的就是驱动程序,双击解压,点击Unzip
解压后就是这个东西,然后把它扔到你想扔到的地方
我将它扔到了
C:\Program Files
第三步:比较关键的一步,设置环境变量
打开解压后的文件一直到
C:\Program Files\Microsoft JDBC Driver 6.0 for SQL Server\sqljdbc_6.0\chs\jre8
这个路径下。然后将这个包的路径复制。
然后就是设置系统的环境变量了。
如下,填完后确定!
第四步:
打开Sql Server 2008配置管理器(Sql Server Configuration Manager),设置TCP端口为1433(一般默认情况是1433),也可以改成定义范围在(0~65535),这个端口值后面需要用到。
当你确定的时候,会提示
没关系,那你就停止TCP/IP,再重启
第五步:
连接数据库
如果你当时安装SQL server的时候设置的是SQL server与windows混合模式登陆,并设置了密码,那么可以忽略此步。
如果你是以Windows身份登陆那么你需要为SQL server添加一个用户。
打开Microsoft SQL Server Management Studio并以windows验证方式登录,左侧的对象资源管理器->安全性->登录名,右击sa->属性,为sa用户添加密码。
添加好密码后点击状态->sql server和windows身份验证模式
这样就创建好了sa用户,并为其设置好了密码。
这里我的密码是”yy5201314“
最后一步,将sqljdbc42.jar导入到eclipise的项目中。
直接将这个包复制到项目路径下
然后利用eclipise导入,具体步骤如下,打开项目–>属性。
导入后如下图:
到这里所有的准备工作已经完成了,接下来就是写代码了
下面就是完整的代码,可供参考。
这里一个函数实现一个功能,实现了增删改查!
写的比较乱(见谅啦)
其中连接数据库的代码是:
String url = “jdbc:sqlserver://localhost:1433;Datebasename=Studys;”;
Connection con = DriverManager.getConnection(url,“sa”,“yy5201314”);
package study;
import java.sql.*;
import java.util.*;
public class Studys {
static Connection con = null;
//用于执行语句
static Statement stmt = null;
//用于接受结果
static ResultSet rs = null;
static String url = "jdbc:sqlserver://localhost:1433;Datebasename=Studys;";
static Scanner input = new Scanner(System.in);
public static void Menu() {
System.out.println("*********** 欢迎使用本系统V.1.0 **********");
System.out.println(" (1)查询 (2)修改 ");
System.out.println(" (3)增加 (4)删除 ");
System.out.println(" (5)退出 ");
System.out.println("*******************************************");
}
public static void Search() throws SQLException {
try {
//连接数据库
con = DriverManager.getConnection(url,"sa","yy5201314");
//按名字查(SQL)
String sql_name = "select Cname,Score from Studys..SC,Studys..C where SC.Cno = C.Cno and SC.Sno in (select Sno from Studys..S where Sname = ?)";
//按课程名查(SQL)
String sql_c = "select Sname,Score from Studys..S,Studys..SC,Studys..C where C.Cname = ? and C.Cno = SC.Cno and SC.Sno = S.Sno";
PreparedStatement name = con.prepareStatement(sql_name);//按名字查询
PreparedStatement c = con.prepareStatement(sql_c);//按课程名查
System.out.println("请选择查询方式:");
System.out.println("(1)姓名查询 (2)课程名查询");
int select = 0;
select = input.nextInt();
switch(select) {
case 1:
System.out.println("请输入要查询的名字:");
String s = input.next();
name.setString(1, s);
rs = name.executeQuery();
System.out.println("*************************");
System.out.println("课程名称"+"\t\t"+"成绩");
while(rs.next()) {
String Cname = rs.getString("Cname");
int Score = rs.getInt("Score");
System.out.println(Cname+"\t"+Score);
}
System.out.println("*************************");
break;
case 2:
System.out.println("请输入要查询的课程名:");
String s1 = input.next();
c.setString(1, s1);
rs = c.executeQuery();
System.out.println("*************************");
System.out.println("学生名称"+"\t\t"+"成绩");
while(rs.next()) {
String Sname = rs.getString("Sname");
int Score = rs.getInt("Score");
System.out.println(Sname+"\t\t"+Score);
}
System.out.println("*************************");
break;
default:
System.out.println("无此选项!");
break;
}
/*while(rs.next()) {
int id = rs.getInt("Sno");
String Sname = rs.getString("Sname");
String Ssex = rs.getString("Ssex");
int Sage = rs.getInt("Sage");
String Sdept = rs.getString("Sdept");
System.out.println(id+"\t"+Sname+"\t"+Ssex+"\t"+Sage+"\t"+Sdept);
}*/
}catch(SQLException e) {
e.printStackTrace();
System.out.println("数据连接错误!!!");
}finally{
if(rs!=null) {
rs.close();
}
if(stmt!=null) {
stmt.close();
}
if(con!=null) {
con.close();
}
}
}
//修改
public static void Change() throws SQLException {
try {
//连接数据库
con = DriverManager.getConnection(url,"sa","yy5201314");
//修改(SQL)
String sql_change = "update Studys..S set Sname = ?,Ssex = ?,Sage = ? where Sno = ?";
String sql = "select * from Studys..S where Sno = ?";
PreparedStatement name = con.prepareStatement(sql_change);
PreparedStatement information = con.prepareStatement(sql);
String sname;//名字
String ssex;
int sage;
int id;
System.out.println("请输入要修改的学生的学号:");
id = input.nextInt();
information.setInt(1, id);
rs = information.executeQuery();
System.out.println("该学生的信息如下:");
System.out.println("************************************");
System.out.println("学号\t姓名\t性别\t年龄");
while(rs.next()) {
id = rs.getInt("Sno");
sname = rs.getString("Sname");
ssex = rs.getString("Ssex");
sage = rs.getInt("Sage");
System.out.println(id+"\t"+sname+"\t"+ssex+"\t"+sage);
}
System.out.println("************************************");
System.out.println("请输入修改后的姓名:");
sname = input.next();
name.setString(1, sname);
System.out.println("请输入修改后的性别:");
ssex = input.next();
name.setString(2, ssex);
System.out.println("请输入修改后的年龄:");
sage = input.nextInt();
name.setInt(3, sage);
name.setInt(4, id);
name.executeUpdate();
System.out.println("修改成功");
System.out.println("修改后的学生信息如下:");
information.setInt(1, id);
rs = information.executeQuery();
System.out.println("************************************");
System.out.println("学号\t姓名\t性别\t年龄");
while(rs.next()) {
id = rs.getInt("Sno");
sname = rs.getString("Sname");
ssex = rs.getString("Ssex");
sage = rs.getInt("Sage");
System.out.println(id+"\t"+sname+"\t"+ssex+"\t"+sage);
}
System.out.println("************************************");
}catch(SQLException e) {
e.printStackTrace();
System.out.println("数据连接错误!!!");
}finally{
if(rs!=null) {
rs.close();
}
if(stmt!=null) {
stmt.close();
}
if(con!=null) {
con.close();
}
}
}
//增加
public static void Add() throws SQLException{
try {
//连接数据库
con = DriverManager.getConnection(url,"sa","yy5201314");
//增加(SQL)a
String sql_add = "insert into Studys..S(Sno,Sname,Ssex,Sage) values(?,?,?,?)";
String sql = "select * from Studys..S where Sno = ?";
PreparedStatement name = con.prepareStatement(sql_add);
PreparedStatement information = con.prepareStatement(sql);
String sname;//名字
String ssex;
int sage;
int id;
System.out.println("请输入要增加学生的学号:");
id = input.nextInt();
name.setInt(1, id);
System.out.println("请输入要增加学生的姓名:");
sname = input.next();
name.setString(2, sname);
System.out.println("请输入要增加学生的性别:");
ssex = input.next();
name.setString(3, ssex);
System.out.println("请输入要增加学生的年龄:");
sage = input.nextInt();
name.setInt(4, sage);
name.executeUpdate();
System.out.println("增加成功");
System.out.println("增加的学生信息如下:");
information.setInt(1, id);
rs = information.executeQuery();
System.out.println("************************************");
System.out.println("学号\t姓名\t性别\t年龄");
while(rs.next()) {
id = rs.getInt("Sno");
sname = rs.getString("Sname");
ssex = rs.getString("Ssex");
sage = rs.getInt("Sage");
System.out.println(id+"\t"+sname+"\t"+ssex+"\t"+sage);
}
System.out.println("************************************");
}catch(SQLException e) {
e.printStackTrace();
System.out.println("数据连接错误!!!");
}finally{
if(rs!=null) {
rs.close();
}
if(stmt!=null) {
stmt.close();
}
if(con!=null) {
con.close();
}
}
}
//删除
public static void Delete() throws SQLException {
try {
//连接数据库
con = DriverManager.getConnection(url,"sa","yy5201314");
//删除(SQL)
String sql_delete = "delete from Studys..S where Sno = ?";
String sql = "select * from Studys..S";
PreparedStatement name = con.prepareStatement(sql_delete);
PreparedStatement information = con.prepareStatement(sql);
int sure = 0;
String sname;//名字
String ssex;
int sage;
int id;
System.out.println("请输入要删除的学生的学号:");
id = input.nextInt();
System.out.println("请问你确定要删除吗?(1)Yes(2)No");
sure = input.nextInt();
if(1 == sure) {
name.setInt(1, id);
name.executeUpdate();
System.out.println("删除成功!");
System.out.println("剩余学生信息如下:");
rs = information.executeQuery();
System.out.println("************************************");
System.out.println("学号\t姓名\t性别\t年龄");
while(rs.next()) {
id = rs.getInt("Sno");
sname = rs.getString("Sname");
ssex = rs.getString("Ssex");
sage = rs.getInt("Sage");
System.out.println(id+"\t"+sname+"\t"+ssex+"\t"+sage);
}
System.out.println("************************************");
}
else {
System.out.println("已取消删除操作!");
}
}catch(SQLException e) {
e.printStackTrace();
System.out.println("数据连接错误!!!");
}finally{
if(rs!=null) {
rs.close();
}
if(stmt!=null) {
stmt.close();
}
if(con!=null) {
con.close();
}
}
}
public static void main(String[] args) throws SQLException {
// TODO Auto-generated method stub
int select = 0;
do {
Menu();
System.out.println("请输入需要的服务: ");
select = input.nextInt();
switch(select) {
case 1:
Search();
break;
case 2:
Change();
break;
case 3:
Add();
break;
case 4:
Delete();
break;
case 5:
System.out.println("拜拜~~~~");
break;
default:
System.out.println("为什么要选这个选项呢?作者还没有设计好。。。拜拜");
break;
}
}while(select != 5);
input.close();
}
}
需要注意的地方:
写sql语句的时候,有可能会出现表名无效,这是因为没有找到此表
所以在表名前加上数据库名和两点,这就是程序中为什么会有那种写法的原因!
安装驱动程序是我参考的一位大佬写的,只要一搜Java连接SQL server
第一个就是他。
这是链接:
https://www.cnblogs.com/chlyA-F/p/6075675.html