您的位置:首页 > 编程语言 > Java开发

java使用JDBC连接数据库

2008-03-18 09:51 561 查看
前提:1.sql   server   2000   任意版本         //本人用的是个人版  
              2.sql   server   2000   sp3升级包  
                      你可以在这里下载http://www.bossed.com.cn/download/detailcp.asp?id=74  
              3.sql   server   2000   jdbc   驱动     //这个就需要自己找了!  
              4.jdk1.4                                             //以下的例子是该版本  
  在以上条件满足的情况下,作以下事情  
              1.建立新数据库名为:TESTDB   ,并在其中建立一个名为test_student的表  
                      包括以下几列(Sno,Sname,Sage,Ssex,Sclass)      
              2.开始编写你自己的连接数据库的类(我这里是借鉴他人的版权不归我所有),你也可以用自己的方法    
  class   Testj{  
          public   static   void   main(String   args[])  
          {      
                  String   RL   =   "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=TESTDB";  
                  String   user   ="king";//这里替换成你自已的数据库用户名  
                  String   password   =   "sql";//这里替换成你自已的数据库用户密码  
                  String   sqlStr   =   "select   *   from   test_student";  
   
                  try{         //这里的异常处理语句是必需的.否则不能通过编译!          
                          Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");  
                          System.out.println(   "类实例化成功!"   );  
                          System.out.println("slkdjf");  
                          Connection   con   =   DriverManager.getConnection(RL,user,password);  
                          System.out.println(   "创建连接对像成功!"   );  
   
                          Statement   st   =   con.createStatement();  
                          System.out.println(   "创建Statement成功!"   );  
   
                          ResultSet   rs   =   st.executeQuery(   sqlStr   );  
                          System.out.println(   "操作数据表成功!"   );  
                          System.out.println(   "----------------!"   );  
   
                          while(rs.next())  
                          {  
                                  System.out.print(rs.getInt("Sno")   +   "         ");  
                                  System.out.print(rs.getString("Sname")   +   "         ");  
                                  System.out.print(rs.getInt("Sage")   +   "         ");  
                                  System.out.print(rs.getString("Ssex")   +   "         ");  
                                  System.out.println(rs.getString("Sclass"));  
                          }  
                          rs.close();  
                          st.close();  
                          con.close();  
                  }  
                  catch(Exception   err){  
                          err.printStackTrace(System.out);  
                  }  
          }  
  }  
  下面进行调试:  
      javac   Testj.java  
      java   Testj  
      如果正确输出应该是:  
      类实例化成功!  
  slkdjf  
  创建连接对像成功!  
  创建Statement成功!  
  操作数据表成功!  
  ----------------!  
  2000         小刚                               21         男         12                  
  2001         小黄                               22         女         12                  
  2002         李娜                               20         女         11                  
  2003         王芳                               19         女         null  
  2004         黄明                               22         男         11                  
  2005         梅兰                               21         女         12                  
  2006         李玉                               22         女         15                  
  2007         李平                               32         女         12                  
   
  注意:这里有几点要说明  
  1.路径问题:  
      你必须配置你的classpath路径否则他在编译时会抱错  
      java.lang.ClassNotFoundException:   com.microsoft.jdbc.sqlserver.SQLServerDriver  
                  at   java.net.URLClassLoader$1.run(URLClassLoader.java:199)  
                  at   java.security.AccessController.doPrivileged(Native   Method)  
                  at   java.net.URLClassLoader.findClass(URLClassLoader.java:187)  
                  at   java.lang.ClassLoader.loadClass(ClassLoader.java:289)  
                  at   sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274)  
                  at   java.lang.ClassLoader.loadClass(ClassLoader.java:235)  
                  at   java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)  
                  at   java.lang.Class.forName0(Native   Method)  
                  at   java.lang.Class.forName(Class.java:141)  
                  at   Test.main(Test.java:11)    
  你的路径应该是这样配置:你可以在在安装jdbc驱动后看那里的帮助文档(是英文的);  
  //这里指在xp系统下  
    classpath   =   ,;C:/Program   Files/Microsoft   SQL   Server   2000   Driver   for   JDBC/lib/msbase.jar;  
                              C:/Program   Files/Microsoft   SQL   Server   2000   Driver   for   JDBC/lib/mssqlserver.jar;  
                              C:/Program   Files/Microsoft   SQL   Server   2000   Driver   for   JDBC/lib/msutil.jar;  
      可千万不要写错哟!  
    2.sp3补丁包问题:  
          如果你在编译时出现下列问题   那么你需要下载并安装sp3补丁包  
        java.sql.SQLException:   [Microsoft][SQLServer   2000   Driver   for   JDBC]Error   establis  
  hing   socket.  
                  at   com.microsoft.jdbc.base.BaseExceptions.createException(Unknown   Source)  
                  at   com.microsoft.jdbc.base.BaseExceptions.getException(Unknown   Source)  
                  at   com.mic
4000
rosoft.jdbc.base.BaseExceptions.getException(Unknown   Source)  
                  at   com.microsoft.jdbc.sqlserver.tds.TDSConnection.<init>(Unknown   Source)  
                  at   com.microsoft.jdbc.sqlserver.SQLServerImplConnection.open(Unknown   Source)  
                  at   com.microsoft.jdbc.base.BaseConnection.getNewImplConnection(Unknown   Source)  
                  at   com.microsoft.jdbc.base.BaseConnection.open(Unknown   Source)  
                  at   com.microsoft.jdbc.base.BaseDriver.connect(Unknown   Source)  
                  at   java.sql.DriverManager.getConnection(Unknown   Source)  
                  at   java.sql.DriverManager.getConnection(Unknown   Source)  
                  at   Test.main(Test.java:14)    
  3.权限问题          
        如果你出现类似这样的问题  
        类实例化成功!  
  slkdjf  
  java.sql.SQLException:   [Microsoft][SQLServer   2000   Driver   for   JDBC][SQLServer]用户   'king'   登录失败。  
  原因:   未与信任   SQL   Server   连接相关联。  
          at   com.microsoft.jdbc.base.BaseExceptions.createException(Unknown   Source)  
          at   com.microsoft.jdbc.base.BaseExceptions.getException(Unknown   Source)  
          at   com.microsoft.jdbc.sqlserver.tds.TDSRequest.processErrorToken(Unknown   Source)  
          at   com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReplyToken(Unknown   Source)  
          at   com.microsoft.jdbc.sqlserver.tds.TDSLoginRequest.processReplyToken(Unknown   Source)  
          at   com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReply(Unknown   Source)  
          at   com.microsoft.jdbc.sqlserver.SQLServerImplConnection.open(Unknown   Source)  
          at   com.microsoft.jdbc.base.BaseConnection.getNewImplConnection(Unknown   Source)  
          at   com.microsoft.jdbc.base.BaseConnection.open(Unknown   Source)  
          at   com.microsoft.jdbc.base.BaseDriver.connect(Unknown   Source)  
          at   java.sql.DriverManager.getConnection(DriverManager.java:512)  
          at   java.sql.DriverManager.getConnection(DriverManager.java:171)  
          at   Testj.main(Testj.java:14)  
           
  原困是未设置SQL   SERVER登录认证模式为混合认证模式,因为SQL   SERVER默认安装后认证模式为WINDOWS认证模式,从而导致出错。  
  解决方法:启动SQLSERVER企业管理器,选择要进行认证模式设置的服务器。右击该服务器,在弹出菜单中选择属性,SQL   SERVER将  
  弹出属性对话框在属性对话框中选择安全性选项,在身份验证处选择“SQL   Server和Windows”,然后确定。   
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息