JDBC从入门到熟练(一)

举报
tea_year 发表于 2021/12/29 22:50:20 2021/12/29
1.9k+ 0 0
【摘要】 //最简单的jdbc连接jdbc,记住5个步骤 import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;public class Test1 { public static void main(String[] args)...
//最简单的jdbc连接jdbc,记住5个步骤
 

      import java.sql.Connection;
      import java.sql.DriverManager;
      import java.sql.SQLException;
      public class Test1 {
     	public static void main(String[] args) {
      		String url="jdbc:sqlserver://localhost:1433;DatabaseName=News2";
      		Connection con=null; //链接对象
     		try {
     			//1加载驱动类,实例化一下
      			Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
      			con=DriverManager.getConnection(url, "sa", "sa");
     			//2.获得连接对象
     			if(con!=null){
      				System.out.println("数据库链接成功!");
      			}
      		} catch (ClassNotFoundException e){
      			e.printStackTrace();
      		} catch (SQLException e) {
      			e.printStackTrace();
      		}finally{
     			try {
      				con.close();//关闭链接
      			} catch (SQLException e) {
      				e.printStackTrace();
      			}
      		}
      	}
      }
  
 

在此基础上继续完善:


      import java.sql.Connection;
      import java.sql.DriverManager;
      import java.sql.ResultSet;
      import java.sql.SQLException;
      import java.sql.Statement;
      //数据库管理类做好了,可以直接链接+关闭语句对象+关闭链接对象;
      public class DBManager {
     	private static Connection con=null;
     	private static String driver="com.microsoft.sqlserver.jdbc.SQLServerDriver";
     	private static String url="jdbc:sqlserver://localhost:1433;DatabaseName=News";
     	private static String sql="insert userInfo values('admin','admin',getdate())";
     	private static String user="sa";
     	private static String pwd="sa";
     	//1.公共方法是获得数据库链接对象
     	public static Connection getConnection(){
     		try {
      			Class.forName(driver);//加,连
      			con=DriverManager.getConnection(url,user,pwd);
      		} catch (ClassNotFoundException e) {
      			e.printStackTrace();
      		} catch (SQLException e) {
      			e.printStackTrace();
      		}
     		return con;//非void都需要return
      	}
     	//关闭所有方法;有3个参数!,省代码了!!!
     	public static void closeAll(ResultSet rs,Statement stmt,Connection con){
     		try {
     			if(rs!=null){
      				rs.close();
      			}
     			if(stmt!=null){
      				stmt.close();
      			}
     			if(con!=null){
      				con.close();
      			}
      		} catch (SQLException e) {
      			e.printStackTrace();
      		}
      	}
      }
  
 

      import java.sql.Date;
      //实体类:存储介质
      public class UserInfo {
     	private int id;
     	private String username;
     	private String pwd;
     	private Date createtime;
     	public UserInfo(int id, String username, String pwd, Date createtime) {
     		super();
     		this.id = id;
     		this.username = username;
     		this.pwd = pwd;
     		this.createtime = createtime;
      	}
     	public int getId() {
     		return id;
      	}
     	public void setId(int id) {
     		this.id = id;
      	}
     	public String getUsername() {
     		return username;
      	}
     	public void setUsername(String username) {
     		this.username = username;
      	}
     	public String getPwd() {
     		return pwd;
      	}
     	public void setPwd(String pwd) {
     		this.pwd = pwd;
      	}
     	public Date getCreatetime() {
     		return createtime;
      	}
     	public void setCreatetime(Date createtime) {
     		this.createtime = createtime;
      	}
      }
  
 


      import java.sql.*;
      import java.sql.Date;
      import java.util.*;
      //对UserInfo表的数据库管理类
      public class UserInfoDB {
     	//0.声明对象;
      	Connection con=null;
      	Statement stmt=null; //语句对象
      	PreparedStatement pstmt=null;
     	int result=0; //受影响的行数
      	ResultSet rs=null; //结果集对象
     	//这个方法:对UserInfo表的增 删 改方法
     	//sql:可以insert update delete
     	public int updateUserInfo(String sql){
     		try {
      			con=DBManager.getConnection();//加连了!!!
      			stmt=con.createStatement();//语句对象
      			result=stmt.executeUpdate(sql);
      		} catch (SQLException e) {
      			e.printStackTrace();
      		}finally{
      			DBManager.closeAll(null, stmt, con);
      		}
     		return result;
      	}
     	//ArrayList:是个可变类型的动态集合
     	//针对预编译语句对象的公共方法;list:存放的是?参数的个数
     	public int updateUserInfo(String sql,List list){
     		try {
      			con=DBManager.getConnection();//嘉联
      			pstmt=con.prepareStatement(sql);//1.得对象
     			//2.要赋值;
     			for(int i=0;i<list.size();i++){
      				pstmt.setObject(i+1,list.get(i));
      			}
      			result=pstmt.executeUpdate();//3.去执行 
      		} catch (SQLException e) {
      			e.printStackTrace();
      		}finally{
      			DBManager.closeAll(null, pstmt, con);
      		}
     		return result;
      	}
     	//简单的查询
     	public List<UserInfo> getUser(String sql){
      		List<UserInfo>list=new ArrayList<UserInfo>();
     		try {
      			con=DBManager.getConnection();
      			pstmt=con.prepareStatement(sql);
      			rs=pstmt.executeQuery();
     			while(rs.next()){
     				int id=rs.getInt(1);
      				String name=rs.getString(2);
      				String pwd=rs.getString("pwd");
      				Date date=rs.getDate(4);
      				UserInfo user=new UserInfo(id,name,pwd,date);
      				list.add(user);
      			}
      		} catch (SQLException e) {
      			e.printStackTrace();
      		}finally{
      			DBManager.closeAll(rs, pstmt, con);
      		}
     		return list;
      	}
      }
  
 


      import java.sql.*;
      import java.util.*;
      public class TestPre {
     	public static void main(String[] args) {
     		//测试;
      		UserInfoDB udb=new UserInfoDB();
      		String sql="select * from userInfo";
      		List<UserInfo>list=udb.getUser(sql);
      		System.out.println("编号\t用户\t密码\t日期");
     		for(UserInfo user:list){
      			System.out.println(user.getId()+"\t"+user.getUsername()+
     					"\t"+user.getPwd()+"\t"+user.getCreatetime());
      		}
      	}
      }
  
 
线课堂:https://edu.csdn.net/lecturer/1516 

文章来源: aaaedu.blog.csdn.net,作者:tea_year,版权归原作者所有,如需转载,请联系作者。

原文链接:aaaedu.blog.csdn.net/article/details/52875790

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。