jbuilder2006连接sqlserver2000的方法
1.其中包括下载JDBC FRO Microsft SQL_Server2000的驱动程序(在微软官方网站下的,是sp3版的,这里就不写具体地址了,网上挺多的,但注意版本,我下的是sp3)。下载后发现是EXE 文件,双击安装。默认安装目录:C:Program FilesMicrosoft SQL Server 2000 Driver for JDBC,其中C:Program FilesMicrosoft SQL Server 2000 Driver for JDBClib目录下的三个扩展名为.jar是我们要的驱动。然后配制环境变量:
在classpath这个环境变量里加入以下语句:
C:Program FilesMicrosoft SQL Server 2000 Driver for JDBClibmsbase.jar;
C:Program FilesMicrosoft SQL Server 2000 Driver for JDBClibmssqlserver.jar;
C:Program FilesMicrosoft SQL Server 2000 Driver for JDBClibmsutil.jar;
如果你的机子上正确配制了JDK的环境变量就应该有CLASSPATH这个环境变量,若没有就新建一个。
(http://download.microsoft.com/download/4/1/d/41d3e9c0-64d1-451e-947b-7a4cba273b2d/setup.exe)
2.检查1433端口是否打开:NETSTAT(DOS进入C:\WINDOWS\SYSTEM32下) NETSTAT -AN
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Error establis
hing socket.
出现上边错误的主要原因是默认的数据库服务器端口 1433没有打开,无法直接连接 。
这时你在命令提示行中输入命令:netstat –an 来查看有没有tcp:0.0.0.0:1433,如果没有那就肯定是因为数据库服务器端口 1433端口没开。这时你需要下载SQL_Serve20000的sp4补丁,下载安装后会发现,默认C盘下SQL2KSP4中setup.dat安装(******* 很重要******),1433端口已经打开了,再次执行程序,顺利执行完毕。
(http://download.microsoft.com/download/9/b/f/9bff6646-2cdb-4069-ada0-548be9cb9338/SQL2000-KB884525-SP4-x86-CHS.EXE)
3 java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]用户 'xxx' 登录失败。原困是未设置SQL SERVER登录认证模式为混合认证模式,因为SQL SERVER默认安装后认证模式为WINDOWS认证模式,从而导致出错。
解决方法:启动SQLSERVER企业管理器,选择要进行认证模式设置的服务器。右击该服务器,在弹出菜单中选择属性,SQL SERVER将
弹出属性对话框在属性对话框中选择安全性选项,在身份验证处选择“SQL Server和Windows”,然后确定。
4.1、打开Jbuilder,选择Tools-->Configure-->Libraries。
.2、然后在左边的列表框下选择New,填入:Name:sql,Location:User Home,然后点击Add,
加入目录C:Program FilesMicrosoft SQL Server 2000 JDBClib,确定 。
.3、Project-->Prject Properties-->Paths-->Required Libraries-->Add
加入刚才添加的User Home/sql确定
.4、Enterprise-->Enterprise Setup-->Database Drivers-->Add,加入User Home/sql,
添加之后在列表框中显示的是sql.config,确定,重新启动JBuilder
.5、Tools-->Database
Pilot-->View-->Options-->Drivers-->Add
填入
Driver class:com.microsoft.jdbc.sqlserver.SQLServerDriver
Simple URL:microsoft:sqlserver://localhost:1433;DatabaseName=mybase
确定之后,Tools-->Database Pilot-->New的Driver里选择
com.microsoft.jdbc.sqlserver.SQLServerDriver
在URL里填入:
microsoft:sqlserver://服务器Ip地址或主机名:1433;DatabaseName=数据库名
点击确定,双击或点击+号输入sql数据库的用户名和密码,就完成了JB与sql的连接!
5.java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]对象名 ‘xxx' 无效
根本原因:
访问数据库的用户有登录权限,但无操作表的权限
解决办法:
1. 在[企业控制台]窗口–[树]子窗口–[安全性]子树–[登录]项里将你使用的登陆用户的默认数据库设为你所使用的数据库。
2. 在[企业控制台]窗口–[树]子窗口–[安全性]子树–[登录]项里新增一个登录用户(在其中选择SQL Server 身份验证、服务器角色和要访问的数据库),以后便可用些新增用户访问你勾选的数据库了。
大家在用java连接ms sql时可能会这样的问题
原因是sa用户为系统用户,它虽然能够登陆数据库,但是数据库里边的权限都是dbo的,所以,我们现在为这个数据库重新建立一个用户.
当然,这个情况只发生在java里边. .net是不会这样的.
只要新建立一个用户,再在权限那分配权限做好就行了.
参照(作者:佚名 文章来源:onegreen.net )
注:
部分作者在写到用户登录时,"PASSWORD="就行了,本人在“=”后加空格,有错,不能连接。
不能在jbuilder中启动项目,因为jbuilder启动web项目时是不会去读你指定的tomcat中的server.xml的,这样的话数据源就不可用了,如果我们不能在jbuilder中启动项目,我门就不能在调试状态下来运行了,这样对我们来写程序就没有太大意义了(当然我们可以在外面启动tomcat,采用远程调试的方法,这样即可以使用数据源,也可以调试修改程序,但这个有点杀鸡用牛刀的意思,不推荐),实际上jbuilder在启动web项目时它会在工程目录下建立一个tomcat文件架,它会去读conf下的server8080.xml文件(8080为你为tomcat设定的端口),所以我们要想在jbuilder中启动数据源,必须要在该配置文件中加上数据源信息),具体的是将
运行工程,在你的主文件夹下的tomcat\conf有server8080.xml,工程停止会消失,在
server8080.xml中的一条注释删掉,(否则它仍然会是临时文件,会被覆盖的)在<host>结点中加上
<Resource name="jdbc/***" auth="Container"
type="javax.sql.DataSource" password="****"
driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"
maxIdle="2"
maxWait="5000"
username="sa"
url="jdbc:microsoft:sqlserver://192.168.*.*:1433;DatabaseName=***"
maxActive="4"/>
注意这里<context>结点可用它自身的,不要修改,重启项目,这时你就可以使用数据源了。之所以在jbuilder中启动web项目有点麻烦,是它没有把项目发布到tomcat的webapp下面去,而是把tomcat的一些东西拿过来了(相当于),象eclispe或idea就没有这种问题了。
以上所说的配置数据源是在jbuilder2006 tomcat5.5.9下实验的.参考http://www.blogjava.net/siliconchip/articles/78214.html
javax.naming.NameNotFoundException: Name jdbc is not bound in this Context
[ ctx=new InitialContext();
Context envCtx = (Context) ctx.lookup("java:comp/env");
ds = (DataSource) ctx.lookup("jdbc/数据库名");]
改为:[ds=(DataSource)ctx.lookup("java:comp/env/jdbc/数据库名"]异常消失,不知有何不同?
Context envCtx = (Context) ctx.lookup("java:comp/env");改为
Context envCtx = (Context) envCtx.lookup("java:comp/env");异常消失.