jdbc终极解惑~兼初学者在登录sql容易忽略的问题

原创 2006年06月13日 20:24:00

说实话也是解决得有点突然。今天下午放学回家,看了看回帖,其中一位网友说到除了要放在ext这个目录里外还要在编译器里面把包导入,我照这个方法做后果然可以了,然后在命令行运行也成功了。

说来也奇怪,以前我试过在命令行运行似乎不行的,而且用jCreator导入包的时候又有点诡异,最初是死活也找不到我放在ext目录里的三个jdbc驱动的包,但资源管理器里面确实可以清楚看到我已经把包复制到里面了,然后又是不知道怎么地反复操作了几次又突然看到了三个包并导入了。不知道是不是jvm的问题。

然后就万事大吉了,终于可以连接成功。

不过唯一一个问题还没明确的解决,也就是用修改环境变量的方法还是不能成功,修改为CLASSPATH=.;C:/driver/msbase.jar;C:/driver/mssqlserver.jar;C:/driver/msutil.jar后,在命令行运行时还是不能找到类,看来还是暂时要把驱动放在/……/jdk/jre/lib/ext这里。

或者另外一个方法是用编辑器例如jCreator直接导入C:/driver里面的包也行,这样就不必再把包放进jdk里面的目录;

而用jdbc连sqlserver的时候还有一个需要注意的是,用户登录的问题,当然前提是sqlserver设置为混合登录模式,而登录的用户一定要具有对所定应数据库有对应操作的权限时才能正常管理。

不然的话会出现“jdbc对象名无效”这个异常,一般如果用sa登录时就会有这个问题出现

最后补充一下就是相关的补丁一定要打齐,sqlserver2000的sp4,还有jdbc的sp3都打上就万无一失

最后把我测试的两个程序贴出来留个底

jdbc直接连接sqlserver2000

import java.sql.SQLException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.PreparedStatement;

public class Jdbctest
{
 protected Jdbctest()
 {
  
 }
 
 public static void main(String [] args)
 {
  try
  {
   Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
   
   System.out.println("testing");
   
  }
  catch(ClassNotFoundException ce)
  {
   System.out.println(ce);
  }
  
  try
  {
   String url="jdbc:microsoft:sqlserver://localhost:1433;databassName=frends;";
   Connection con=DriverManager.getConnection(url,"test","1111");

   if(con!=null)
   {
    System.out.println("连接成功");
   }
   Statement s=con.createStatement();
   /*
   String sql="select * from friends";
   PreparedStatement pstmt=con.prepareStatement(sql);
   ResultSet rs=pstmt.executeQuery();
   */
   ResultSet rs=s.executeQuery("select * from friends");
   
   while(rs.next())
   {
    System.out.print(rs.getString(1)+"/t");
    System.out.print(rs.getString(2)+"/t");
    System.out.print(rs.getInt(3)+"/t");
    System.out.print(rs.getDate(4)+"/t");
    System.out.print(rs.getInt(5)+"/t");
    System.out.println(" ");
   }
   rs.close();
   s.close();
  }
  catch(SQLException ce)
  {
   System.out.println(ce);
  }
 }
}

其中test为自定义的一个超级用户

JdbcOdbc桥接

import java.sql.SQLException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.sql.ResultSet;

public class jdbcOdbcTest
{
 protected jdbcOdbcTest(){}
 
 public static void main(String [] args)
 {
  try
  {
   Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
   
  }
  catch(ClassNotFoundException ce)
  {
   System.out.println(ce);
  }
  
  try
  {
   String url="jdbc:odbc:test";
   Connection con=DriverManager.getConnection(url);
   Statement s=con.createStatement();
   ResultSet rs=s.executeQuery("select * from friends");
   
   while(rs.next())
   {
    System.out.print(rs.getString(1)+"/t");
    System.out.print(rs.getString(2)+"/t");
    System.out.print(rs.getInt(3)+"/t");
    System.out.print(rs.getDate(4)+"/t");
    System.out.print(rs.getInt(5)+"/t");
    System.out.println(" ");
   }
   rs.close();
   s.close();
  }
  catch(SQLException ce)
  {
   System.out.println(ce);
  }
 }
}

其中test为系统DNS

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

初学者容易犯的错误,SQL中的基本操作问题(mysql)一

======================================================================================= ============...

Java中容易忽略的问题(表达式篇,根据java解惑归纳)

1.在需要精确答案的地方,要避免使用float和double;对于货币计算,要使用int,long或BigDecimal。这是因为并不是所有的小数都可以用二进制浮点数精确表示。   2.长整除问题...

cocos2dx-3.1.1 win8+eclipse+android开发 初学者容易迷惑的两个问题

这段时间学习cocos2dx,在理解上容易有几个疑惑的地方,写篇blog记录一下。 第一个是资源存放的目录,在使用eclipse进行开发时,有个地方很容易产生误解,我们先看一下: 我们可以...

SQL初学者们的终极教材

  • 2010-05-26 14:06
  • 76KB
  • 下载

容易忽略的SQL语句

1 NOT关键字 我们很多时候都将NOT 和LIKE 关键字组合成NOT LIKE 来使用。但忘记了NOT自己也可以单独使用, 可以用来否定随后的表达式。例: SELECT * FROM CLPa...

JDBC连接SQL Server 2008问题

  • 2012-10-31 10:54
  • 251KB
  • 下载

请注意那些容易被忽略的SQL注入技巧(转)

1.关于Openrowset和Opendatasource   可能这个技巧早有人已经会了,就是利用openrowset发送本地命令。通常我们的用法是(包括MSDN的列子)如下: sele...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)