连接数据库的问题,新手求教

haorenH 2016-07-25 02:27:41
Java与数据库已经建立好连接,现在想让具体的表与数据库建立连接,比如说插入、删除、修改,插入以后就直接插入到已经连接好的数据库里面,怎么实现?!还有删除、修改类似的问题。怎么写sql语句?还有往之前建好的类里面的哪个位置写?
...全文
316 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
弱水三千ap 2016-07-26
  • 打赏
  • 举报
回复
//前段时间学习写过的,希望能帮到你 package cn.itcast.demo1; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.Scanner; import org.junit.Test; /** * 编写测试用例工具类 执行增删改查 * @author Administrator * */ //注:测试用例方法的要求:方法不能有反回值,也不能有参数 public class TestCRUD { @Test public void testInsert(){ Connection conn = null; Statement stmt = null; try { //加载驱动 Class.forName(""); Class.forName("com.mysql.jdbc.Driver"); //DriverManager.registerDriver(new Driver()); //获取连接 Connection DriverManager.getConnection(url,username,pwd); conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/day08", "root", "abc"); //创建执行sql语句的对象 Statement stmt = conn.createStatement(); //执行sql语句 int i = stmt.executeUpdate("INSERT INTO category(cid,cname) VALUES('c004','鞋靴箱包')"); //得到结果,并处理 if(i>0){ System.out.println("success"); } } catch (Exception e) { e.printStackTrace(); }finally{ if(stmt!=null){ try { stmt.close(); } catch (SQLException e) { e.printStackTrace(); } stmt = null; } if(conn!=null){ try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } conn = null; } } } @Test public void testUpdate(){ Connection conn = null; Statement stmt = null; try { //加载驱动 Class.forName(""); Class.forName("com.mysql.jdbc.Driver"); //获取连接 Connection DriverManager.getConnection(url,username,pwd); conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/day08", "root", "abc"); //创建执行sql语句的对象 Statement stmt = conn.createStatement(); //执行sql语句 int i = stmt.executeUpdate("UPDATE category SET cname='服装衣帽' WHERE cid='c004'"); //得到结果,并处理 if(i>0){ System.out.println("success"); } } catch (Exception e) { e.printStackTrace(); }finally{ if(stmt!=null){ try { stmt.close(); } catch (SQLException e) { e.printStackTrace(); } stmt = null; } if(conn!=null){ try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } conn = null; } } } @Test //查询所有商品信息 public void testSelectAll() { Connection conn = null; PreparedStatement stmt = null; ResultSet rs = null; try { //1、加载驱动 Class.forName("com.mysql.jdbc.Driver"); //2、创建连接 Connection conn = DriverManager.getConnection("jdbc:mysql:///day08", "root", "abc"); //3、获取执行sql语句的对象 PreparedStatement(小货车) stmt = conn.prepareStatement("SELECT * FROM product"); //4、执行sql语句 rs = stmt.executeQuery(); //5、得到结果集,并处理 while(rs.next()){ System.out.println(rs.getInt(1)+"\t"+rs.getString("pname")+"\t"+rs.getDouble(3)+"\t"+rs.getDate(4)+rs.getInt(5)); } } catch (Exception e) { e.printStackTrace(); }finally{ //6、关闭资源 if(rs!=null){ try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } rs = null; } if(stmt!=null){ try { stmt.close(); } catch (SQLException e) { e.printStackTrace(); } stmt=null; } if(conn!=null){ try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } conn=null; } } } @Test //演示sql注入问题 public void testLogin(){ Scanner input = new Scanner(System.in); System.out.println("请输入用户名:"); String username = input.nextLine(); System.out.println("请输入密码:"); String password = input.nextLine(); Connection conn = null; //Statement stmt = null; PreparedStatement stmt = null; try { //加载驱动 Class.forName(""); Class.forName("com.mysql.jdbc.Driver"); //获取连接 Connection DriverManager.getConnection(url,username,pwd); conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/day08", "root", "abc"); //创建执行sql语句的对象 Statement //stmt = conn.createStatement(); String sql = "SELECT * FROM users WHERE username=? AND PASSWORD=?"; stmt = conn.prepareStatement(sql); stmt.setString(1, username);//参数1:代表给第一个?赋值。 参数2:代表赋的值 stmt.setString(2, password); //执行sql语句 //System.out.println(sql); ResultSet rs = stmt.executeQuery(); //得到结果,并处理 if(rs.next()){ System.out.println("登录成功!"); }else{ System.out.println("用户名或密错误!"); } } catch (Exception e) { e.printStackTrace(); }finally{ if(stmt!=null){ try { stmt.close(); } catch (SQLException e) { e.printStackTrace(); } stmt = null; } if(conn!=null){ try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } conn = null; } } } }
qq_35565386 2016-07-26
  • 打赏
  • 举报
回复
package dao; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import entity.Admin; import util.DBUtil; public class AdminDao { /** * 根据账号查询管理员 * @param adminCode 账号 */ public Admin findByCode(String adminCode) { Connection con = null; try { con = DBUtil.getConnection(); String sql = "select * from admin_info_lhh " + "where admin_code=?"; PreparedStatement ps = con.prepareStatement(sql); ps.setString(1, adminCode); ResultSet rs = ps.executeQuery(); if(rs.next()) { Admin a = new Admin(); a.setAdminId(rs.getInt("admin_id")); a.setAdminCode(rs.getString("admin_code")); a.setPassword(rs.getString("password")); a.setName(rs.getString("name")); a.setTelephone(rs.getString("telephone")); a.setEmail(rs.getString("email")); a.setEnrolldate(rs.getTimestamp("enrolldate")); return a; } } catch(Exception e) { throw new RuntimeException( "查询管理员失败", e); } finally { DBUtil.close(con); } return null; } public static void main(String[] args) { AdminDao dao = new AdminDao(); Admin a = dao.findByCode("caocao"); System.out.println(a.getName()); } } 好了这就是一个完成的操作了
qq_35565386 2016-07-26
  • 打赏
  • 举报
回复
你可以用servlet实现数据库的链接,也可以用mybatis,hibernate等框架,最基础的是 servlet,楼上都已经发了,大概就是写一个database可以连接数据库,想必你已经写好了package util; import java.io.IOException; import java.sql.Connection; import java.sql.SQLException; import java.util.Properties; import org.apache.commons.dbcp.BasicDataSource; public class DBUtil { //dbcp连接池 private static BasicDataSource bds; //连接池只需要实例化一次; //连接池需要的参数只需读取一次; static { Properties p = new Properties(); try { p.load(DBUtil.class.getClassLoader() .getResourceAsStream("db.properties")); //1.连接池必需要4个连接参数 String driver = p.getProperty("driver"); String url = p.getProperty("url"); String user = p.getProperty("user"); String pwd = p.getProperty("pwd"); //2.连接池自身也有一些参数(有默认值) String initSize = p.getProperty("initSize"); String maxSize = p.getProperty("maxSize"); //3.创建连接池并设置这些参数 bds = new BasicDataSource(); //连接池会自动加载驱动, //所以这里不必再Class.forName() bds.setDriverClassName(driver); bds.setUrl(url); bds.setUsername(user); bds.setPassword(pwd); bds.setInitialSize( Integer.parseInt(initSize)); bds.setMaxActive( Integer.parseInt(maxSize)); } catch (IOException e) { e.printStackTrace(); throw new RuntimeException( "加载资源文件失败", e); } } public static Connection getConnection() throws SQLException { return bds.getConnection(); } /** * 使用连接池创建出来的连接,其close方法并 * 不是真的关闭连接,而是将此连接归还给池。 * 并且会清空连接中的一切数据,状态置为空闲态。 */ public static void close(Connection con) { if(con != null) { try { con.close(); } catch (SQLException e) { e.printStackTrace(); throw new RuntimeException( "关闭连接失败", e); } } } public static void main(String[] args) throws SQLException { Connection con = DBUtil.getConnection(); System.out.println(con); DBUtil.close(con); } }
haorenH 2016-07-26
  • 打赏
  • 举报
回复
我怎么这么笨
haorenH 2016-07-26
  • 打赏
  • 举报
回复
引用 12 楼 连时光都吐了的回复:
小伙子要加油啊
加油!加油!
haorenH 2016-07-26
  • 打赏
  • 举报
回复
引用 10 楼 qq308323970的回复:
用框架就非常简单了增删改查只需要6 7 行代码就行了 如果不用框架 纯代码对表增删改查的话无非也就是代码多一点而已 简单的说 非常简单 例子: 纯代码 查询的例子 static void search(){ //第1步:构建jdbc工作框架 Connection conn = null; try { conn = DbUtil.getConnetion(); // Log.getLog().info("数据库连接成功。。。"); // 准备动态sql语句 // String sql="select * from user_reg where user_type=?"; // Object[]params={"学生"}; String sql="select * from student "; Object[]params={}; java.sql.PreparedStatement pstmt=conn.prepareStatement(sql); //设置查询参数 for(int i=0;i<params.length;i++){ pstmt.setObject(i+1, params[i]); } //执行查询 ResultSet rs=pstmt.executeQuery(); //使用结果集 int n=0; while(true){ boolean isOK=rs.next(); if(!isOK)break; n++; String name=rs.getString("name"); int xuehao=rs.getInt("学号"); int age=rs.getInt("age"); String sex=rs.getString("sex"); System.out.println(n+" "+"name:"+name+" 学号:"+xuehao+" age:"+age+" sex"+sex); } rs.close(); pstmt.close(); } catch (Exception e) { e.printStackTrace(); } finally { DbUtil.close(conn); } } hibernate 框架 static void search(){ String select="from pojo.StudentStruts2 order by id"; Session s=HibernateSessionFactory.getSession(); Query q=s.createQuery(select); List<StudentStruts2>l=q.list(); System.err.println("有"+l.size()+"条数据"); for (int i = 0; i < l.size(); i++) { StudentStruts2 pojo=l.get(i); System.out.println("id="+pojo.getId()+",name="+pojo.getName()+",age="+pojo.getAge()+",sex="+pojo.getSex()); } s.close(); } 现成的代码 看得懂吧
可为什么就是出不来数
今天晴 2016-07-26
  • 打赏
  • 举报
回复
小伙子要加油啊
God灬Yong 2016-07-26
  • 打赏
  • 举报
回复
一看楼主就要学jdbc,百度一下,你就知道连接各种数据库,大同小异
  • 打赏
  • 举报
回复
用框架就非常简单了增删改查只需要6 7 行代码就行了 如果不用框架 纯代码对表增删改查的话无非也就是代码多一点而已 简单的说 非常简单 例子: 纯代码 查询的例子 static void search(){ //第1步:构建jdbc工作框架 Connection conn = null; try { conn = DbUtil.getConnetion(); // Log.getLog().info("数据库连接成功。。。"); // 准备动态sql语句 // String sql="select * from user_reg where user_type=?"; // Object[]params={"学生"}; String sql="select * from student "; Object[]params={}; java.sql.PreparedStatement pstmt=conn.prepareStatement(sql); //设置查询参数 for(int i=0;i<params.length;i++){ pstmt.setObject(i+1, params[i]); } //执行查询 ResultSet rs=pstmt.executeQuery(); //使用结果集 int n=0; while(true){ boolean isOK=rs.next(); if(!isOK)break; n++; String name=rs.getString("name"); int xuehao=rs.getInt("学号"); int age=rs.getInt("age"); String sex=rs.getString("sex"); System.out.println(n+" "+"name:"+name+" 学号:"+xuehao+" age:"+age+" sex"+sex); } rs.close(); pstmt.close(); } catch (Exception e) { e.printStackTrace(); } finally { DbUtil.close(conn); } } hibernate 框架 static void search(){ String select="from pojo.StudentStruts2 order by id"; Session s=HibernateSessionFactory.getSession(); Query q=s.createQuery(select); List<StudentStruts2>l=q.list(); System.err.println("有"+l.size()+"条数据"); for (int i = 0; i < l.size(); i++) { StudentStruts2 pojo=l.get(i); System.out.println("id="+pojo.getId()+",name="+pojo.getName()+",age="+pojo.getAge()+",sex="+pojo.getSex()); } s.close(); } 现成的代码 看得懂吧
missMeyo 2016-07-26
  • 打赏
  • 举报
回复
搜索下W3c的SQL部分,以及jdbc代码的写法。
a2639966489 2016-07-25
  • 打赏
  • 举报
回复
直接在JAVA文件里实现数据库操作的话,我用的是MySql。不知道你用的是什么,如果以MYSQL为例的话: Class.forName("com.mysql.jdbc.Driver") ;//加载MYSQL驱动 Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/?") //创建连接,问号代表你的要连接的库的名称 //接下来可以用Statement或者PreparedStatement接口,这两个接口就是用来执行SQL语句的,如果你不会SQL的基本语法,可以去网上找教程。 //一般用PreparedStatement接口,因为是执行动态SQL语句的。 //然后创建PreparedStatement对象 PreparedStatement ps = conn.prepapreStatement(sql) // 参数sql为sql的语句,类型是string. //sql可以这样写,已插入一行数据为例 String sql = "insert into TableName value(?,?,?,?)"; //TableNmae 表示你要插入的某个数据库里的表,?号表示列名对应的值。 //最后执行这个操作就可以了 ps.executeUpdate(); 如果看不懂建议找教程看下,而且SQL基本语句很简单,上网查一下基本就会了。
haorenH 2016-07-25
  • 打赏
  • 举报
回复
引用 2 楼 bey_jl的回复:
真的好初级.
那就是说你都会咯?求教程
haorenH 2016-07-25
  • 打赏
  • 举报
回复
引用 1 楼 a2639966489的回复:
你的意思是怎么在java文件里实现数据库操作还是直接在IDE上用SQL操作数据库?
就是在java文件里,
bey_jl 2016-07-25
  • 打赏
  • 举报
回复
真的好初级.
a2639966489 2016-07-25
  • 打赏
  • 举报
回复
你的意思是怎么在java文件里实现数据库操作还是直接在IDE上用SQL操作数据库?

67,549

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧