- 驱动处理,导入驱动jar包,注册
//注册到java数据库驱动管理器,在加载过程 Class.forName("com.mysql.jdbc.Driver");
- 获取数据连接
String connstr="jdbc:mysql://127.0.0.1:3306/phone ?user=root&password=root&useUnicode=true&characterEncoding=utf-8"; Connection conn=DriverManager.getConnection(connstr, "root", "123456");
- 创建命令对象
//第一套 //执行sql语句对象 Statement st=conn.createStatement(); st.addBatch(sql1); st.addBatch(sql2); st.addBatch(sql3); int a[]=st.executeBatch(); //第二套 //预处理命令(先设置sql语句,在设置参数,在执行) //好处:避免sql字符串拼接,批量设置?值,将(blob等)特殊类型进行赋值 PreparedStatement st=conn.prepareStatement("insert into category(cat_name) value(?) "); st.setString(1, "my"); st.executeUpdate(); 处理过程、函数: //数据库命令(处理数据库过程),能赋值参数,能获取out类型参数 CallableStatement st=conn.prepareCall("call aa(?,?)"); //aa(myid int , out myname varchar(64) ) 过程参数 st.setInt(1, 3); //设置第一个参数为3,第二个参数不能设置(out) ResultSet rs=st.executeQuery(); //返回结果集,通过select while(rs.next()) System.out.println(rs.getString(2)); System.out.println(st.getString(2)); //获取参数 返回值 通过out指定-必须赋值 rs.close();
- 执行查询
ResultSet rs = st.executeQuery(sql); //查询,得到结果集对象,游标方式读取 int mark = st.executeUpdate(sql); //增删改,得到修改变化的行数mark
- 处理结果
ResultSet rs = st.executeQuery("select * from goods"); while(rs.next()) { // System.out.println(rs.getString(2)); System.out.println(rs.getString("goods_name")+" "+rs.getInt(3)); } rs.absolute(1); //移动游标到指定行 rs.close();
- mate数据
//获取表结构 结果集结构(列名、表名、列数量、列类型,...) tatement st=conn.createStatement(); ResultSet rs = st.executeQuery("select * from category"); ResultSetMetaData mate = rs.getMetaData(); for(int i=1;i<=mate.getColumnCount();i++) { System.out.println(mate.getColumnLabel(i)); } rs.close(); //数据库结构 DatabaseMetaData m = conn.getMetaData();
- 系统变量
@@autocommit //设置数据库自动事务 set @@autocommit=1; @@identity //最后一次新增的自动编号id select @@identity //获取最后一次新增的自动编号id
- 数据库事务 :可优化增删改新能
conn.setAutoCommit(false); //更改提交方式 try{ ... //添加多条sql语句,可能出错 conn.commit(); //无异常提交 }catch(Exception e){ conn.rollback(); //出现异常回滚 } conn.setAutoCommit(true); //还原设置