Java通过JDBC连接数据库的三种⽅式并对数据库实现增删改查
前⾔
java连接数据库完整流程为:
1,获得驱动(driver),数据库连接(url),⽤户名(username),密码(password)基本信息的三种⽅式。
2,通过获得的信息完成JDBC实现连接数据库。
注:连接前请导⼊jar包,例:连接mysql数据库需要导⼊mysql-connector-java-5.1.39-bin.jar包
连接数据库的三种⽅式
三种⽅式中⼆,三最为常⽤
⼀,直接获取数据库信息,并jdbc驱动连接
这⾥写代码⽚public static Connection connection() {
//获得连接数据库连接
Connection conn=null;
try {
//初始化Driver类,注册驱动
Class.forName("sql.jdbc.Driver");
//连接数据库
conn= Connection("jdbc:mysql://localhost:3306/web", "root", "root");
} catch (Exception e) {
e.printStackTrace();
}
return conn;
}
⼆,获得db.properties⽂件中的配置信息获得
注解:
ResourceBundle 类的作⽤就是读取资源属性⽂件(properties),根据.properties⽂件的名称信息(本地化信息),匹配当前系统的国别语⾔信息(也可以程序指定),然后获取相应的properties⽂件的内容。
public class Jdbc_Conn2 {
private static String driver;
private static String url;
private static String username;
private static String password;
static {
//通过ResourceBundle获得db⽂件中的信息
ResourceBundle bundle = Bundle("db");
//通过key值获得db⽂件中的配置信息
String(driver);
String(url);
String(username);
String(password);
}
public static Connection mysqlconn() {
//连接数据库
Connection conn=null;
Class.forName(driver);
conn= Connection(url, username, password);
return conn;
}
三、通过IO流获得db⽂件中配置信息
注解:
*⾸先,调⽤对象的getClass()⽅法是获得对象当前的类类型,这部分数据存在⽅法区中,⽽后在类类型上调⽤getClassLoader()⽅法是得到当前类型的类加载器,在Java中所有的类都是通过加载器加载到虚拟机中的,
⽽且类加载器之间存在⽗⼦关系,就是⼦知道⽗,⽗不知道⼦,这样不同的⼦加载的类型之间是⽆法访问的(虽然它们都被放在⽅法区中),所以在这⾥通过当前类的加载器来加载资源也就是保证是和类类型同⼀个加载器加载的。最后调⽤了类加载器的getResourceAsStream()⽅法来加载⽂件资源*
public class Jdbc_Conn3 {
private static String dirver;
private static String url;
private static String username;
private static String password;
static {
//IO流
InputStream is=Jdbc_ClassLoader().getResourceAsStream("db.properties");
Properties props=new Properties();
try {
props.load(is);
} catch (IOException e) {
// TODO Auto-generated catch block
java的jdbc连接数据库
e.printStackTrace();
}
Property("driver");
Property("url");
Property("username");
Property("password");
}
public static Connection mysqlconn() {
//1,获得连接数据库的驱动
Connection conn=null;
Class.forName(dirver);
conn= Connection(url, username, password);
return conn;
}
连数据库后,使⽤完毕需要关闭连接
关闭数据库需要关闭以下资源:1,Connection(连接).2,PreparedStatement(预编译).3,Result(结果集)
public static void mysqlcolse(Connection con,PreparedStatement pstem,ResultSet rs) {
try {
if(con!=null) {
con.close();
}
if(pstem!=null)
{
pstem.close();
}
if(rs!=null) {
rs.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
完成以上步骤便是⼀个连接数据库的java模板了,以上连接⽅法与关闭⽅法存于⼀个java⽂件中即可完成。
增、删、改、查
前⾔
1 以下代码在完成连接数据库的基础之上完成,通过java实现对数据库的增删改查
⼀、查询功能
注:
Connection中prepareStatement()⽅法,提供占位符(?),占位符设置参数setXXX(index,value)。优点:改动参数时,不需改动sql,通过占位符修改。ResultSet类,作为查询条件的返回集的作⽤
//先声明对象,优点在于⽅便下⽅任意代码块调⽤对象信息。
Connection con=null;
PreparedStatement pstm=null;
ResultSet rs=null;
@Test
public void testJv3()
{
//1,通过JDBC的模板连接上数据库
con=sqlcon();
//2,编写sql语句
String sql="select * from user where uid=?";
try {
//3.预编译需要执⾏的sql
pstm = con.prepareStatement(sql);
/
/prepareStatement中占位符?,通过setXXX(index,values)来进⾏设置,index从1开始,
pstm.setInt(1, 1);
//执⾏sql并返回查询结果
ResultSet rs = uteQuery();
())
{
String String(3);
String String(2);
System.out.println(uname+":"+password);
}else {
System.out.println("没有结果");
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
sqlcolse(con, pstm, rs);
}
}
额外知识点:查询条件输出⽅式
if():当只有⼀条结果时,可⽤if
while():当有多条结果时,可⽤while
⼆、增,删,改
增删改,只需要改对应sql即可,以下代码为模板。
PreparedStatement pstm=null;
Connection con=null;
//1,实例化MyDataSource
ComboPooledDataSource mdsc= new ComboPooledDataSource();
//2.从MyDataSource的池中获得连接对象
try {
con= Connection();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
//3.写sql
String sql="insert into user values (null,?,?)";
//4,预编译
try {
pstm= con.prepareStatement(sql);
pstm.setString(1, "zj");
pstm.setString(2, "zj");
int uteUpdate();
if(col>0) {
System.out.println("添加成功:"+col+"条数");
}else {
System.out.println("添加失败");
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
lease(con, pstm, null);
}
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论