花了些时间把java的jdbc连接学了大…

下午花了一下午的时间将java连接数据库的知识学了个差不多了,

刚开始我循着以前的思想,以前用c#连接操作sqlserver的经验,去理解java的数据库连接,发现差不多的思想,心里窃喜。。。嘿嘿看来不难嘛


 

然后在百度知道找到了别人问的问题,有人也给出了个答案,我就试着对着那人的说法,自己一字一句的敲下来,慢慢的理解,修改,然后完成了我自己的第一个jdbc数据库操作底层。当然,刚开始的时候因为以前只做过SQLserver的,所以也写的是sqlserver的连接,在之后学MYSQL。


代码如下:

 

  •  

  1. package com.prince;
  2. import java.sql.*;
  3. public class jdbcconn{
  4. Connection conn=null;
  5. String url="jdbc:microsoft:sqlserver://127.0.0.1:1433;user=sa;password=123456;database=mydb";
  6. //构造函数加载驱动
  7. public jdbcconn{ 
  8. try {
  9. Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
  10. }
  11. catch(Exception e){
  12. System.out.println(e.getMessage());
  13. }
  14. }
  15. //EQ方法用于查询数据库,返回结果集类型
  16. public ResultSet EQ(String SQL){
  17. ResultSet rs=null;
  18. try{
  19. conn=DriverManager.getConnection(url);
  20. Statement stmt=conn.creatStatement();
  21. rs=stmt.executeQuery(SQL);
  22. }
  23. catch(Exception e){
  24. }
  25. return rs;
  26. }
  27. //UP用于更新修改数据库,返回int类型数据,表示影响到的行数
  28. public int UP(String SQL){
  29. int rs=0;
  30. try{
  31. conn= DriverManager.getConnection();
  32. Statement stmt=conn.creatStatement();
  33. rs=stmt.executeQuery(SQL);
  34. }
  35. catch(Exception e){}
  36. return rs;
  37. }
  38. //关闭数据库连接
  39. public void close(){
  40. try{
  41. conn.close();
  42. }
  43. catch(Exception e){
  44. }
  45. }
  46. }

 

 

 ================================================================================================

 

 

 

做到这里,我就有些比较懂了,其实和我以前用c#连接数据库是一样的,然后我发现我学的很快,呵呵,再然后我就去看JAVA连接MYSQL的了,


发现其实也差不多,那我就直接开始做了,首先要做的是拥有MYSQL,这个。。。以前玩网单的时候,看人家的apache+MYSQL,那叫一个羡慕啊。。。。今天我也来做个底层!!


 

首先去了百度搜索MYSQL,然后去官网下了个最新的包和驱动JRE,包170多兆。。。。啥来着。。这么大,安装完后才发现原来包括MYSQL+各种驱动+一个图形管理GUI的界面,以前我看MYSQL的数据库都是用的其他的软件查看的,像什么Navicat for MySQL,我电脑还有呢。。。。现在官网直接提供了这么一个管理界面,真好。。。。


 

接着就是使用myeclipse创建个java工程,创建个LIB文件夹,将

mysql-connector-java-5.1.24-bin.jar   复制到lib中,然后将它build path --ADD。。。添加到外拓展JAR包中,这样就可以使用  import java.sql.*;中的对象了。


 

然后创建了个类,开始编写MYSQL数据库访问底层函数,这个,当然我需要参考下网友发的那些方法了,然后总结自己的方法,找出一些问题。


 

大概遇到并解决的问题如下了:


 

1.刚开始遇到的问题是关于关键字URL的,我刚开始使用和sqlserver一样的URL,稍稍改了下,然后发现方法不对头,百度了下,发现使用那个有三个参数的方法更好:

 

  • Connection conn=null;
  • String url="jdbc:MySQL://192.168.1.105:3306/mydb";
  • String account="root";
  • String password="123456";
  • conn=DriverManager.getConnection(url,account,password);


这样测试后连接才正确了,虽然我也没法确定是我用法的原因还是什么,但是通过看myeclipse给的方法提示,我还是能看懂用哪个好的。


 

2.接下来,遇到的问题是关于驱动加载的,也是字段的问题,这次是大小写的问题,在:

Class.forName("com.mysql.jdbc.Driver"); 这句中MYSQL我之前用的是大写,测试了多遍,总没有通过,然后百度,发现一些人用的是小写,然后我改了再测试了下,发现的确是小写,这是我疏忽了。


 

3.之后在完善了查询底层的返回值后,我测试了查询的语句,没有问题,查询的到东西,这时候基本上可以说我成功了大半,剩下的就是将查询的数据经过整理,存储,调用之类的,在之后就是完成除了查询的,增加,更新,删除,不过我有经验,知道后面几种都只是语句的问题,它们使用同一种方法就可以。接下来我就遇到了最严重的一个错误,那就是方法的用错!   


一直以为使用rs=stmt.executeQuery(SQL); 不仅可以查询,还可以实现其他功能,随着一次次的测试失败,我才醒悟。。。。我傻了半天啊,查询怎么可能和其他会修改数据的方法相同啊。。。。 经过仔细的阅读Statement对象的各个方法,发现executeQuery的确是查询,但是返回的是对象,不是我想当然的以为的返回的受影响的行数,整数。有很多的关于更新操作的方法,executeQuery 就是多态中的一种方法,一个SQL参数,返回受影响的行数,正是我想要的,这下我测试才通过了。。。。。。哎。。。弄了半天,不过也收获了挺多的。


花了些时间把java的jdbc连接学了大概,总结下

 

下面给出代码:

 

mySqlConnection.java

 

 

  • package com.prince;
  • import java.sql.*;
  • public class mySqlConnection {
  • Connection conn=null;
  • String url="jdbc:MySQL://192.168.1.105:3306/mydb";
  • String account="root";
  • String password="123456";
  • //构造函数加载驱动
  • public boolean mySqlConnection()
  • try {
  • Class.forName("com.mysql.jdbc.Driver");
  • }
  • catch(Exception e){
  • System.out.println(e.getMessage());
  • return false;
  • }
  • return true;
  • }
  • //判断mySQL的开启与否
  • public boolean openOrNot() throws SQLException{
  • conn=DriverManager.getConnection(url,account,password);
  • if(conn.isClosed()){
  • return false;
  • }else{return true;}
  • }
  • //EQ方法用于查询数据库,返回结果集类型
  • public ResultSet EQ(String SQL){
  • ResultSet rs=null;
  • try{
  • conn=DriverManager.getConnection(url,account,password);
  • Statement stmt=conn.createStatement();
  • rs=stmt.executeQuery(SQL);
  • }
  • catch(Exception e){
  • System.out.println(e.getMessage());
  • }
  • return rs;
  • }
  • //UP用于更新修改数据库,返回int类型数据,表示影响到的行数,0为没影响
  • public int UP(String SQL){
  • int rs=0;
  • try{
  • connDriverManager.getConnection(url,account,password);
  • Statement stmt=conn.createStatement();
  • rs=stmt.executeUpdate(SQL);
  • }
  • catch(Exception e){
  • System.out.println(e.getMessage());
  • }
  • return rs;
  • }
  • //关闭数据库连接
  • public boolean close() throws SQLException{
  • try{
  • conn.close();
  • }
  • catch(Exception e){
  • System.out.println(e.getMessage());
  • return false;
  • }
  • if(conn.isClosed()) {
  • return true;
  • }else{return true;}
  • }
  • }

 

 

Mainclass.java



 

 

  • package com.prince;
  • import java.sql.*;
  • import java.io.*;
  • public class mainclass {
  • public static void main(String[] args) throws SQLException {
  • // TODO Auto-generated method stub
  • System.out.println("启动mySQL测试");
  • mySqlConnection msconn=new mySqlConnection(); //创建要用的类的对象,以供调用其中函数
  • if(msconn.mySqlConnection()){        //测试驱动加载
  • System.out.println("驱动加载成功");
  • }else{System.out.println("驱动加载失败");}
  • if(msconn.openOrNot()){
  • System.out.println("连接成功");            //测试连接
  • }else{System.out.println("连接失败");}
  • try                                     //插入实现
  • String sql="insert " +
  • "into myaccount(username,passwd) " +
  • "values('网','m');";
  • int back=0;
  • back=msconn.UP(sql);               //执行语句
  • System.out.println("受影响行数:"+back);
  • if(back==0){System.out.println("插入失败");}else{System.out.println("插入成功");}
  • }catch(Exception e){System.out.println(e.toString());}
  • try                                          //查询实现
  • String sql="select " +
  • "from myaccount;";             //查询语句定义
  • ResultSet rs=null;
  • rs=msconn.EQ(sql);                  //执行语句
  • System.out.println("查询如下:");
  • while(rs.next()){ //查询返回的对象的下一个才是数据,为false则没数据
  • //数据输出
  • String data=rs.getString("username");
  • String data2=rs.getString("passwd");
  • //data new String(data.getBytes("ISO-8859-1"),"GB2312");
  •           //如果乱码,则解码 System.out.println(data.toString()+data2.toString());
  • }
  • rs.close();  //查询完毕后,关闭返回结果 撤销空间,养成良好习惯
  • }catch(Exception e){System.out.println(e.toString());}
  • if(msconn.close()){                           //关闭连接
  • System.out.println("关闭成功");
  • }else{System.out.println("关闭失败");}
  • }
  • }

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值