jdbc
//jar 放在 lib 把jar 加入依赖.
获取连接 (这是一个方法)
private Connection getConnection(){
//通过反射加载驱动
Class.forName(“com.mysql.jdbc.Driver”);
//通过DriverManager 来获取连接对象
private Connection conn=DriverManager.getConnection(“jdbc:mysql://localhost:3306/login”, “root”, “root”);
}
数据驱动类
通过反射加载驱动, Class.forName(”“)
url = jdbc:msql//当前的ip地址(本机一般用localhost)+mysql数据库的端口号(3306)+/数据库的库名
jdbc 驱动管理器类 DriverManger.getConnection("mysql的url地址","用户名","密码")
执行增删改
连接得到 statement PreparedStatement 首先父子关系 有缺点 statement 不安全 效率低,拼接麻烦,
PreparedStatement 优点 安全 效率高 预编译 缺点: 每一个都要一一对应
通过连接获取 PreparedStatement =conn.prepareStatement(传的是你的sql语句)
替换占位符 ps.setObject(“索引(从一开始)”,”拼接具体数据”);
执行commit操作 提交 ps.executeUpdate(“没有参数”); 返回的数据库影响的行数 int
查询
通过连接获取 PreparedStatement =conn.prepareStatement(传的是你的sql语句)
替换占位符 ps.setObject(“索引(从一开始)”,”拼接具体数据”);
返回的是一个结果集 ps. executeQuery(“没有参数”);
所有的数据的封装到这个结果集里面
拿到结果集开始便利
rs.next()判断是否有下一个对象
while(rs.next)
得到具体的值 rs.getInt("lid") rs.getString("lid") int string 根据数据库表里面的类型来定义
rs.getInt("lid") 这个里面有参数,参数有两种传递方式, 第一种是传递其索引(一般不建议使用,) 第二种传的列的名字
注意点 : java.lang.NullPointerException 只要是调用方法出错,绝对是你的对象没有实例化 ,一定要把返回值返回出来,
查询总记录数 第一种方法 是:
select lid(字段名) from 表名 一定把你的指针移到最后一行 rs.last(); ,再获取其行号 rs.getRow() 把行号要return出来
Class.forName(“com.mysql.jdbc.Driver”); 通过反射加载驱动
DriverManager.getConnection(“jdbc:mysql://localhost:3306/login?useUnicode=true&characterEncoding=utf-8”,”root”,”root”); 获取连接
conn.prepareStatement(sql) 通过连接对象得到执行sql的对象
ps.setObject(i+1,objects[i]); 给其占位符赋值(通过for循环)
ps.executeUpdate(); commit 执行你的增加,修改,删除操作
ps.executeQuery(); commit 执行查询的方法
rs.getInt(“lid”) 获取数据库表里面此列的具体值
rs.last(); 把指针移到最后一位
num = rs.getRow(); 获取其行号