JAVA连接数据库
1.新建项目,项目中新建文件夹,并将数据库包粘贴到新建文件夹中
2.选中数据库包,右键 build path -->add build path
3.加载数据库驱动
Class.forName("com.mysql.jdbc.Driver");
4.建立数据库连接对象
String url = "jdbc:mysql://localhost:3306/数据库名";
String user = "数据库连接账号";
String password = "数据库连接账号";
Connertion conn = DriverManager.getConnection(url,user,password);
5.创建sql语句对象
Statement st = conn.createStatement();
6.建立sql语句,并执行sql语句 返回值类型为结果集
String sql = "select * from 表名;";
ResultSet rs = st.ResultQuery(sql);
7.遍历结果集
while(rs.next()){
int id = rs.getInt(1); 获取第一条字段的内容
String name = rs.getString(2);获取第二条字段内容
字段是什么类型的数据,就使用什么类型进行接收
System.out.println(id+name); 打印获取到的数据
}
8.关闭数据库连接 遵循先开后关的原则
rs.close();
st.close();
conn.close();
API类库
DriverManager:管理jdbc驱动程序的基本服务
常用方法:
static getConnection(String url,String user,String password);
url:连接数据库的字符串
jdbc:mysql://localhost:3306/studentdb(数据库名)
user:mysql数据库的账号 :root
password:mysql数据库的密码 :root
返回值:Connection
Connection 接口:
常用方法:
createStatement():创建一个执行sql语句的对象:返回值:Statement
prepareStatement(String sql) 创建一个 PreparedStatement 对象来将参数化的 SQL 语句发送到数据库。
返回值:PreparedStatement
Statement : 用于执行静态 SQL 语句并返回它所生成结果的对象。
常用方法:
executeQuery(String sql) :执行给定的 SQL 语句,该语句返回单个 ResultSet 对象。
返回值对象:ResultSet
eg: select * from student;
executeUpdate(String sql) :执行给定 SQL 语句,该语句可能为 INSERT、UPDATE 或 DELETE 语句
PreparedStatement:表示预编译的sql对象。
执行动态的sql语句:
select * from student where id = ? and name = ?;
?:代表占位符
常用方法:
setInt(int parameterIndex, int x) 将指定参数设置为给定 Java int 值。
setInt(1,100); 把100的值给第一个问号
select * from student where id = 100;
setString(int parameterIndex,String x) :设置字符串的值
setString(2,"zhangsan");
select * from student where id = 100 and name = 'zhangsan';
executeQuery() :在此 PreparedStatement 对象中执行 SQL 查询: select
返回值:ResultSet 对象。
executeUpdate() :执行添加,修改,删除的sql句:insert,update,delete
ResultSet: 执行查询返回的结果集
常用方法:
next() : 是产生的结果集的下标移动一位。
getInt(int index); 获取整形的字段值
getString(int index);获取字符串字段的值
getDouble(int index);获取双精度类型的字段的字:钱
getDate(int index);获取日期类型的字段的值
getInt(String labelName); 通过字段名获取字段的值
int id = getInt("id");
getString(String lableName);
String name = getString("name");
getFloat(String lableName);
float score = getFloat("score");
getDouble(Sting lableName);
double money = getDouble("money");
getDate(String labelName);
Date date = getDate("date");
通用方法:
close(); 释放资源
释放原则:先创建的后关闭,后创建先关闭。
使用PrepareStatement语句对象
加载数据库驱动
Class.forName("com.mysql.jdbc.Driver");
创建数据库连接
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/数据库名","数据库连接账号","数据库连接密码");
创建SQL语句对象
PrepareStatement ps = conn.PrepareStatement("select * from 表名 where id = ? and name = ?");
为条件占位符赋值
ps.setInt(1,2); 把2赋给第一个占位符
ps.setString(2,"李四"); 把李四赋给第二个占位符
执行SQL语句,并接受返回的ResultSet 结果集
ResultSet rs = ps.executeQuery();
使产生的结果集下标移动一位
rs.next();
获取结果集中每个字段的值
int id = rs.getInt("id");
String name = rs.getString("name");
打印获取到的字段值
System.out.println(id + name);
关闭数据库连接,遵循先开后关的原则
rs.close();
ps.close();
conn.close();
Class类
获取class对象的方法
1.通过调用从Objcet类继承过来的getclass方法,获取
TestClass tc = new TestClass();
Class<? extends TestClass> c1 = tc.getClass();
2.通过.class的方式获得class对象
Class<?> c2 = TestClass.class;
基本数据类型也可以通过.class的方式获得
Class<?> c3 = int.class;
Class<?> c4 = boolean.class;
Class<?> c5 = int[].class;
3.通过Class.forname(String className)方法获取一个类对应的class对象
Class<?> c6 = Class.forName("com.mysql.jdbc.Driver");
4.通过包装类的TYPE属性获得对应的数据类型class对象
Class<Integer> t = Integer.TYPE;
通过某一个类的Class对象获取对应类的构造方法
Class<?> c = String.class;
获取类的全类名
String name = c.getName();
System.out.println("全类名:"+name);
System.out.println();
获取这个类的public类型的属性,返回的是数组类型,打印需要遍历
Field[] fields = c.getFields();
for(Field f : fields){
System.out.println("公开的属性:"+f);
}
System.out.println();
获取这个类的所有属性,返回时数组,打印需遍历
Field[] de = c.getDeclaredFields();
for(Field f : de){
System.out.println("全部属性:"+f);
}
System.out.println();
获取这个类的公开方法,返回数组,打印需遍历
Method[] methods = c.getMethods();
for(Method m : methods){
System.out.println("公开方法:"+m);
}
System.out.println();
获取这个类的所有方法,返回数组,打印需遍历
Method[] declaredMethods = c.getDeclaredMethods();
for(Method d : declaredMethods){
System.out.println("所有方法:"+d);
}
System.out.println();
获取这个类的公开构造器,返回数组,打印需遍历
Constructor<?>[] constructors = c.getConstructors();
for(Constructor co : constructors){
System.out.println("公开的构造方法:"+co);
}
System.out.println();
获取这个类的所有构造器,返回数组,打印需遍历
Constructor<?>[] declaredConstructors = c.getDeclaredConstructors();
for(Constructor co : declaredConstructors){
System.out.println("所有构造方法:"+co);
}