jdbc 增删改查以及遇见的 数据库报错Can't get hostname for your address如何解决
最近开始复习以前学过的JDBC今天肝了一晚上 来睡睡回笼觉,长话短说 我们现在开始。
我们先写一个获取数据库连接的jdbc封装类 以后可以用
如果不是maven环境的话在src文件下新建一个db.properties文件
然后在改文件中写入数据库配置信息 :
driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/xxxx username=root password=xxxx
然后嘞需要写一个链接数据库的工具类如下:
package com.java.util;
import java.io.IOException;
import java.io.InputStream;
import java.sql.*;
import java.util.Properties;
import java.util.ResourceBundle;
//jdbc 封装工具类
public class JdbcUtil {
private static String driver;
private static String url;
private static String username;
private static String password;
/*
* 静态代码块加载配置文件信息
*/
static {
try {
//1.通过当前类获取类加载器
ClassLoader classLoader=JdbcUtil.class.getClassLoader();
//2.类加载器的方式获取输入流
InputStream is=classLoader.getResourceAsStream("db.properties");
//3.创建properties对象
Properties props=new Properties();
//4.加载输入流
props.load(is);
//5.获取相关参数的值
driver=props.getProperty("driver");
url=props.getProperty("url");
username=props.getProperty("username");
password=props.getProperty("password");
System.out.println(password);
} catch (IOException e) {
e.printStackTrace();
}
}
public static Connection getConnection() {
Connection conn = null;
try {
// 1.注册驱动
Class.forName(driver);
// 2.获取连接
conn = DriverManager.getConnection(url, username, password);
} catch (Exception e) {
e.printStackTrace();
}
return conn;
}
// 释放资源
public static void release(Connection conn, PreparedStatement pstmt, ResultSet rs) {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (pstmt != null) {
try {
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
写这个的时候别忘记导入连接驱动包哟= =
然后我们创建一个User类
包含 id name 和password 创建 他们的set get方法 这里忽略不写
继续创建一个UserDao接口 代码如下:
package com.java.dao;
import com.java.domain.User;
import java.util.List;
public interface UserDao {
//添加
public void addc(User user);
//更新
public void updata(User user);
//删除
public void delete(int id) ;
//通过id查询
public User findById(int id) ;
//查询表中所有信息
public List<User> findAll() ;
}
在创建UserDao基础的情况下创建一个userDaoimp类 并且实现UserDao 接口的方法,也就是我们所说的增删改查= = 如下:
package com.java.dao.impl;
import com.java.dao.UserDao;
import com.java.domain.User;
import com.java.util.JdbcUtil;
import com.sun.xml.internal.bind.v2.model.core.ID;
import org.junit.Test;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
public class UserDaoImpl implements UserDao{
//增加
@Override
public void addc(User user) {
Connection conn = null;
PreparedStatement pstmt = null;
String sql = "insert into user(id,name,password)values(?,?,?)";
conn = JdbcUtil.getConnection();
try {
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1,user.getId());
pstmt.setString(2,user.getName());
pstmt.setString(3,user.getPassword());
pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}finally {
JdbcUtil.release(conn,pstmt,null);
}
}
//更新
@Override
public void updata(User user) {
Connection conn = null;
PreparedStatement ps = null;
String sql = "UPDATE user SET name=?,password=? WHERE id=?";
try {
conn = JdbcUtil.getConnection();
ps = conn.prepareStatement(sql);
ps.setString(1,user.getName());
ps.setString(2,user.getPassword());
ps.setInt(3, user.getId());
ps.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
}finally {
JdbcUtil.release(conn,ps,null);
}
}
//删除
@Override
public void delete(int id) {
Connection conn = null;
PreparedStatement pstm= null;
String sql = "delete from user where id=?";
conn = JdbcUtil.getConnection();
try {
pstm = conn.prepareStatement(sql);
pstm.setInt(1,id);
pstm.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}finally {
JdbcUtil.release(conn,pstm,null);
}
}
//通过id查询
@Override
public User findById(int id) {
Connection conn = null;
PreparedStatement pstm = null;
ResultSet rs = null;
User user = null;
String sql ="select name from user where id=?";
conn = JdbcUtil.getConnection();
try {
pstm = conn.prepareStatement(sql);
pstm.setInt(1,id);
rs = pstm.executeQuery();
if (rs.next()){
user = new User();
user.setId(id);
user.setName(rs.getString(1));
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
JdbcUtil.release(conn,pstm,rs);
}
return user;
}
//查询所有
@Override
public List<User> findAll(){
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
User user = null;
List<User> userList = new ArrayList<User>();
String sql = "select id,name,password from user";
try{
conn = JdbcUtil.getConnection();
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
while(rs.next()){
user = new User();
user.setId(rs.getInt(1));
user.setName(rs.getString(2));
user.setPassword(rs.getString(3));
userList.add(user);
}
}catch(SQLException e){
e.printStackTrace();
}finally{
JdbcUtil.release(conn, ps, rs);
}
return userList;
}
}
这个时候写好了需要测试一下 所以新建一个测试类 UserDaoTest:
package com.java.test;
import com.java.dao.UserDao;
import com.java.dao.impl.UserDaoImpl;
import com.java.domain.User;
import org.junit.Test;
import java.util.ArrayList;
import java.util.List;
public class UserDaoTest {
@Test
public void addc(){
User user = new User();
user.setId(3);
user.setName("jojo");
user.setPassword("123123");
new UserDaoImpl().addc(user);
}
@Test
public void updata(){
User user = new User();
user.setName("wang");
user.setPassword("56745");
user.setId(2);
new UserDaoImpl().updata(user);
System.out.println(user.getName());
}
@Test
public void deletId(){
int id = 3;
new UserDaoImpl().delete(id);
}
@Test
public void ByTestID(){
int id=2;
User user = new UserDaoImpl().findById(id);
System.out.println(user.getName());
}
@Test
public void testAllByUser(){
ArrayList list= (ArrayList) new UserDaoImpl().findAll();
for(int i=0;i<list.size();i++){
User user =(User) list.get(i);
System.out.println(user);
}
}
}
ok增删改查完了 剩下各位方法的使用比如: PreparedStatement 什么的啊 我明天再详细的写出来 今天再写这个代码的时候遇见过一个问题
MySQL数据库连接不上并且报错 Can't get hostname for your address 解决方案如下

在计算机---右键管理----服务里面 找到MYSQL 右键属性 找到MYSQL的服务

再右键属性 找到登陆 勾选本地用户。。。

选择完毕之后再重启一下服务就好了= = 累啊。
jdbc 增删改查以及遇见的 数据库报错Can't get hostname for your address如何解决的更多相关文章
- JDBC增删改查,PreparedStatement和Statement的区别
此篇是在上一篇的基础上使用PreparedStatement对象来实现JDBC增删改查的 具体工具类JDBCTools和实现类和配置文件在上一篇Statement对象实现的时候有写. 上一篇地址htt ...
- JDBC增删改查
/* db.properties的配置 driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/day14 username=root ...
- jdbc增删改查进行封装
jdbc封装 1 dao (代码分层) com.aaa.dao 存放dao相关的类型 例如 StudentDAOImpl 处理 数据库的链接 存取数据 com.aaa.servlet 存放servle ...
- JAVA JDBC 增删改查简单例子
1.数据库配置文件jdbc.properties driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/test username= ...
- JDBC增删改查和查唯一的完整代码
第一部分代码(实体类) package com.wf.entity; public class Hehe{ private int hehe_id; private String hehe_name; ...
- 用户增删改查 django生命周期 数据库操作
一 django生命周期 1 浏览器输入一个请求(get/post)2 响应到django程序中3 执行到url,url通过请求的地址匹配到不同的视图函数4 执行对应的视图函数,此过程可以查询数据库, ...
- Java学生信息增删改查(并没用数据库)
一个泛型的应用,Java版本增删改查,写的简陋,望批评指正 2016-07-02 很久前写的一个程序了.拿出来存一下,不是为了展示啥,自己用的时候还可以看看.写的很粗糙. import java.io ...
- JDBC 增删改查代码 过滤查询语句
package test; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; i ...
- Java操作数据库之JDBC增删改查
1.java连接MySql数据库 代码区域: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 ...
随机推荐
- Ajax+jquery+jaso传输数据
所谓的Ajax.这里我们讲二种方法 方法一:(微软有自带Ajax框架) 在Asp.net里微软有自己的Ajax框架.就是在页面后台.cs文件里引入 using System.Web.Service ...
- SpringMvc+AngularJS通过CORS实现跨域方案
什么是跨域请求问题? 这个问题的起因在于现代浏览器默认都会基于安全原因而阻止跨域的ajax请求,这是现代浏览器中必备的功能,但是往往给开发带来不便. 但跨域的需求却一直都在,为了跨域,勤劳勇敢的程序猿 ...
- Codeforces 623D [Amazing概率题]
很有趣的一道题吖! 做法:贪心+迭代 Sigma(i*(pr[i]-pr[i-1])))=n-sigma(pr[i]), 所以我们贪心地是pr[i]尽可能大. 也就是让pr[i]/pr[i-1]尽可能 ...
- Windows下对拍
What is 对拍 Tool: 你的程序 可以输出正解的暴力程序 数据生成器 输出对比器 RP 用来干什么? 用来造数据,检验你的程序的正确性,以方便修改和出现未考虑到的情况 如何工作? 数据生成器 ...
- 【转】javascript 分号问题
javascript的分号代表语句的结束符,但由于javascript具有分号自动插入规则,所以它是一个十分容易让人模糊的东西,在一般情况下,一个换行就会产生一个分号,但实际情况却不然,也就是说在ja ...
- Python零散函数
1. python json.dumps() json.dump()的区别 注意cat ,是直接输出文件的内容 load和loads都是实现"反序列化",区别在于(以Python为 ...
- 如何查看chrome浏览器已保存的密码
该方法是针对在chrome中已经存储了登陆密码的情况. chrome版本是 66.0.3359.139(正式版本) (64 位),不知道哪天会改了这个bug. 一般来说,我们登陆chrome浏览器已经 ...
- QT中的相对位置,绝对位置之间的转换(maptoglobal,mapfromglobal)
1. 相对位置:每个Qwidget都能通过pos()获取到相对自己父类窗口的位置, 2. 绝对位置:pWidget->mapToGlobal(QPoint(0,0)) ;将当前控件的相对位置转换 ...
- 安装ubuntu系统及ubuntu安装Python的几点心得
一.安装ubuntu系统 1.ubuntu系统是Linux系统的一种,和centos差别不大,但是个人还是建议大家安装ubuntu,它更适合国内使用习惯,换句话说更亲切. 2.安装方法不再赘述,网上有 ...
- Urllib库的使用
一.任务描述 本实验任务主要对urllib库进行一些基本操作,通过完成本实验任务,要求学生熟练掌握urllib库的使用,并对urllib库的基本操作进行整理并填写工作任务报告. 二.任务目标 1. ...