Java jdbc
https://mvnrepository.com/artifact/mysql/mysql-connector-java/8.0.13往pom.xml中添加依赖
jdbc:Java database connection。Java数据库链接技术,就是通过代码来连接数据库,操作数据库的一种技术。
数据库:保存数据的仓库,几乎所有的项目都会用到数据库来保存项目的数据。
package com.zcq.maven.jdbc;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
import com.mysql.cj.protocol.Resultset;
public class JDBCDemo1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
JDBCDemo1 demo1 = new JDBCDemo1();
String sqlString = "select name,address from student where id=? and phonenumber=?";
Object[] valuesObjects = { "2012323", "1382323445" };
Map<String, Object> columLabelAndValues = demo1.query(sqlString, valuesObjects);
Set<String> coumLabel = columLabelAndValues.keySet();
for (String columLabel : coumLabel) {
System.out.println("columLabel" + columLabel + "columValues" + columLabelAndValues.get(columLabel));
}
}
public static Properties properties = new Properties();
static {
try {
System.out.println("静态代码块解析properties文件");
InputStream iStream = new FileInputStream(new File(" "));// 此处差配置jdbc的路径
properties.load(iStream);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static Map<String, Object> query(String sql, Object... values) {
// 数据库的查询
// 1.根据连接信息,获得数据库的连接
// String url="jdbc:mysql://localhost:3306/demo";//jdbc:mysql:是固定的
// String user="zcq";
// String password="admin";
// "?":代表占位符,进行预编译,防止sql注入
// String sql="select name,address from student where id=? and phonenumber=?";
Map<String, Object> columnLableAndValuesMap = null;
try {// 根据连接信息 获得数据库连接
Connection connection = getConnection();
// 2.获取PreparedStatement对象(此类型的对象有提供数据库操作方法)
PreparedStatement prepareStatement = connection.prepareStatement(sql);
// 3.设置条件字段的值
for (int i = 0; i < values.length; i++) {
prepareStatement.setObject(i + 1, values[i]);// i代表数组的索引,+1是sql里面的字段
}
// 4.调用查询方法,执行查询 返回结果集
ResultSet resultset = prepareStatement.executeQuery();
// 获取查询相关的信息
ResultSetMetaData resultMetaDta = resultset.getMetaData();
// 得到查询字段的数目
int columnCount = resultMetaDta.getColumnCount();
columnLableAndValuesMap = new HashMap<String, Object>();
// 5.从结果集查询集合
while (resultset.next()) {
// 循环取出每个查询字段的数据
for (int i = 1; i < columnCount; i++) {
String columnLable = resultMetaDta.getColumnLabel(i);// 传列号得到列名
String columnValue = resultset.getObject(columnLable).toString();
columnLableAndValuesMap.put(columnLable, columnValue);
}
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return columnLableAndValuesMap;
}
public static Connection getConnection() throws SQLException {
// 获取数据库连接
// 直接从properties中取url,user,password
String urlString = properties.getProperty("jdbc.url");// 配置文件里面的键jdbc.url
String userString = properties.getProperty("jdbc.user");
String password = properties.getProperty("jdbc.password");
Connection connection = DriverManager.getConnection(urlString, userString, password);
return connection;
}
}


浙公网安备 33010602011771号