(sqljdbc.jar)这个jdbc需要的可以加我,发给你
1.连接前的准备工作
①打开服务,打开数据库软件,进行登录
②进行建数据库,创表
③打开eclipse,创建Java项目(注意:必须为lib包)
④先将指定数据库的驱动包存放到Java程序中
在项目专门创建一个文件夹存储
(右击项目-new--folder--命名lib)
找到驱动包(sqljdbc.jar) copy到该文件夹内⑤右击驱动包加载到Java程序
build path----add build path2.测试Java程序连接数据库
①自定义类编写主程序的入口
②加载驱动利用Class.forName 会有异常
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
③利用DriverManager实现与数据库连接并且会返回Connection连接对
Connection conn =DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=db_stu_1202", "sa", "123");
1、启动服务
2、建库 建表
3、新建项目
4、导入驱动包
5、加载驱动Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
6、创建连接(其实就一步)
①定义连接字符串
String url="jdbc:sqlserver://localhost:1433;DatabaseName=jdbc12_07";
注意:数据库的名字必须相同,账号密码也一致
②创建连接 Connection con = DriverManager.getConnection(url,"sa","123");
7、获得执行对象,传入参数 ?或者是字符串拼接+
PreparedStatement ps=con.prepareStatement("update tb_stu set sname='李四' where sname='张三'");
8、进行
①增、删、改
会用到 ps.executeUpdate();----所影响的表行数
增、删、改返 回结果 int 类型
②查询:ps.executeQuery();
得到结果集ResultSet rs循环while(rs.next()){ System.out.print("学号:"+rs.getInt(1)+"\t"); System.out.println(); }
9、关闭连接操作
ps.cloes;
con.cloes;
url.cloes;
注意:关闭数据库连接时要按照ps,con,url这个顺序关闭10.查看数据库是否连接成功!!
import java.sql.Connection; import java.sql.DriverManager; public class JDBCDemo { public static void main(String[] args) { // 注意事项:sql包中所需要用到的类都会有异常出现 // 需求:Java程序与数据库建立连接 // 1.让加载的驱动包在本类中进行使用 Class.forName(); // SQLServerDriver try { // 加载驱动 Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); // 2.让Java程序连接数据库 通过DriverManager类 // 第一个参数url的作用:连接sqlserver的规则 // 1433 代表sqlserver的端口号 任何一个程序都有一个独一无二的端口号 Connection conn = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=db_student", "sa", "123"); //判断conn连接对象是否为空即可知道程序是否连上数据库? System.out.println(conn!=null?"连接成功":"连接失败"); } catch (Exception e) { e.printStackTrace(); } } }
11.增删改查操作:
①增加操作
try { //1.加载驱动 Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); //2.建立连接 localhost 你的数据库的服务器名称 db_stutent数据库名称 sa你数据库的账号 123你数据库的密码! Connection conn = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=db_Student", "sa", "123"); //3.提供数据(通过Scanner优化) Scanner sc = new Scanner(System.in); System.out.println("请输入姓名: "); String sname = sc.next(); System.out.println("请输入性别: "); String ssex = sc.next(); System.out.println("请输入年龄: "); int sage = sc.nextInt(); System.out.println("请输入地址: "); String saddress = sc.next(); System.out.println("请输入电话: "); String stelphone = sc.next(); //4.定义sql语句 值先不传,使用"?"占位置。 ?表示占位符 String sql = "insert into tb_student values(?,?,?,?,?)"; //5.将定义的sql语句传入指定的方法 并且会返回一个执行对象出来 PreparedStatement ps = conn.prepareStatement(sql); //6.为占位符的位置进行重新赋值 通过执行对象 ps.setString(1, sname); ps.setString(2, ssex); ps.setInt(3, sage); ps.setString(4, saddress); ps.setString(5, stelphone); //7.开车(调用方法并且返回所影响的行数)就是将数据转入数据库 int n = ps.executeUpdate(); System.out.println(n>0?"OK":"NO");ok 说明数据 加入数据库成功 no数据加入失败 //8.关闭数据库连接 ps.close(); conn.close(); } catch (Exception e) { e.printStackTrace(); }
②删除操作
package com.zking.test; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.util.Scanner; public class DeleteTest { public static void main(String[] args) { /* * 删除操作 */ try { //1.加载驱动 Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); //2.建立数据库连接 Connection conn = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=db_student", "sa", "123"); Scanner sc = new Scanner(System.in); System.out.println("请输入删除学生的学号: "); int sid = sc.nextInt(); //3.编写删除的sql语句 String sql = "delete from tb_student where sid = "+sid; //4.将sql语句通过conn连接对象传入方法返回执行对象ps PreparedStatement ps = conn.prepareStatement(sql); //5.开车(调用方法返回所影响的行数) int n = ps.executeUpdate(); System.out.println(n>0?"OK":"NO"); ps.close(); conn.close(); } catch (Exception e) { e.printStackTrace(); } } }
③修改操作
import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.util.Scanner; public class UpdateTest { public static void main(String[] args) { // 修改操作 try { Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); Connection conn = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=db_stu_1202", "sa", "123"); String sql = "update tb_student set sname = ? , ssex = ? , sage = ? , saddress = ? , stelphone = ? where sid = ?"; PreparedStatement ps = conn.prepareStatement(sql); Scanner sc = new Scanner(System.in); System.out.println("请输入需要修改学生信息的学号: "); int sid = sc.nextInt(); System.out.println("请输入修改后的姓名: "); String sname = sc.next(); System.out.println("请输入修改后的性别: "); String ssex = sc.next(); System.out.println("请输入修改后的年龄: "); int sage = sc.nextInt(); System.out.println("请输入修改后的地址: "); String saddress = sc.next(); System.out.println("请输入修改后的电话: "); String stelphone = sc.next(); //给占位符(?)进行赋值 ps.setString(1, sname); ps.setString(2, ssex); ps.setInt(3, sage); ps.setString(4, saddress); ps.setString(5, stelphone); ps.setInt(6, sid); int n = ps.executeUpdate(); 判断是否添加成功! System.out.println(n>0?"OK":"NO"); 关闭数据库与eclipse 的连接 ps.close(); conn.close(); } catch (Exception e) { e.printStackTrace(); } } }
④查询操作
查询数据之前得找一个容器(Student)将查找到的数据保存在其中,方便查看
注意的是:属性要与数据库中的一样且顺序一样(完全一致)
package com.zking.test; /** * 学生类,存储数据库中的每一行记录 * @author Zkingzz * * 类:数据库是什么 这个类就是什么 顺序一致,属性名一致 * */ public class Student { private int sid; private String sname; private String ssex; private int sage; private String saddress; private String stelphone; public Student() { // TODO Auto-generated constructor stub } public Student( String sname, String ssex, int sage, String saddress, String stelphone) { super(); this.sname = sname; this.ssex = ssex; this.sage = sage; this.saddress = saddress; this.stelphone = stelphone; } public Student(int sid, String sname, String ssex, int sage, String saddress, String stelphone) { super(); this.sid = sid; this.sname = sname; this.ssex = ssex; this.sage = sage; this.saddress = saddress; this.stelphone = stelphone; } public int getSid() { return sid; } public void setSid(int sid) { this.sid = sid; } public String getSname() { return sname; } public void setSname(String sname) { this.sname = sname; } public String getSsex() { return ssex; } public void setSsex(String ssex) { this.ssex = ssex; } public int getSage() { return sage; } public void setSage(int sage) { this.sage = sage; } public String getSaddress() { return saddress; } public void setSaddress(String saddress) { this.saddress = saddress; } public String getStelphone() { return stelphone; } public void setStelphone(String stelphone) { this.stelphone = stelphone; } @Override public String toString() { return "Student [sid=" + sid + ", sname=" + sname + ", ssex=" + ssex + ", sage=" + sage + ", saddress=" + saddress + ", stelphone=" + stelphone + "]"; } }
开始操作:
import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.ArrayList; import java.util.List; public class SelectTest4 { public static void main(String[] args) { List list = new ArrayList();集合框架 用于装载数据库中的数据! //操作:查询所有 高级版本 try { //1.加载驱动 Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); //2.建立连接 Connection conn = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=db_stu_1202", "sa", "123"); //3.编写sql语句 String sql = "select * from tb_student"; //4.将sql传入执行对象中并返回 PreparedStatement ps = conn.prepareStatement(sql); //5.调用方法将数据库中的所有数据返回到一个ResultSet结果集对象中 ResultSet rs = ps.executeQuery(); //ResultSet结果集对象类似集合容器 获取这个结果集对象中的所有数据,遍历即可。 while //6.遍历结果集对象 while(rs.next()) {//如果结果集中存在下一条数据 // Student stu = new Student(rs.getInt(1), rs.getString(2), rs.getString(3), rs.getInt(4), rs.getString(5),rs.getString(6)); // System.out.println(stu); list.add(stu); } //7.关闭 rs.close(); ps.close(); conn.close(); } catch (Exception e) { e.printStackTrace(); } //遍历集合 for (Student student : list) { System.out.println(student); } } }