Java如何了连接Microsoft SQL Server 2000??
开发环境:JBuilder2006,选择使用的服务器tomcat5.5.9
按照相关说明下载了Microsoft SQL Server 2000补丁,安装后将
C:\Program Files\Microsoft SQL Server 2000 Driver for JDBC\lib
目录下的三个文件msbase,mssqlserver,msutil拷贝到tomcat下的comon\lib下
(D:\Borland\JBuilder2006\thirdparty\jakarta-tomcat-5.5.9\common\lib)下代码如下,
Bean代码:
package myprg;
import java.sql.*;
/**
* <p>Title: </p>
*
* <p>Description: </p>
*
* <p>Copyright: Copyright (c) 2008</p>
*
* <p>Company: </p>
*
* @author not attributable
* @version 1.0
*/
public class firm {
//String strDbDriver="sun.jdbc.odbc.JdbcOdbcDriver";
//String strDbUrl="jdbc:odbc:firm"; String strDbDriver2="com.microsoft.jdbc.sqlserver.SQLServerDriver";
String strDbUrl2="jdbc:microsoft:sqlserver://localhost;DatabaseName=KCBusMag;SelectMethod=cursor"; private Connection conn=null;
private Statement stmt=null;
ResultSet rs=null;
//<!--注册数据库驱动程序-->
public firm() {
try
{ Class.forName(strDbDriver);
}
catch(java.lang.ClassNotFoundException e)
{System.err.println("firm():"+e.getMessage() ); }
} //<!--建立数据库连接及数据查询-->
public ResultSet executeQuery(String sql)
{ rs=null;
try
{
conn=DriverManager.getConnection(strDbUrl,"sa","");
stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
//stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE) ;
rs=stmt.executeQuery(sql) ;
}
catch(SQLException ex)
{
System.err.println("aq.executeQuery():"+ex.getMessage()) ;
}
return rs;
}
//<!--定义数据操作-->
public void executUpdate(String sql)
{ stmt=null;
rs=null;
try
{
conn=DriverManager.getConnection(strDbUrl,"sa","");
stmt=conn.createStatement() ;
stmt.executeQuery(sql) ;
stmt.close();
conn.close() ;
}
catch(SQLException ex)
{
System.err.println("aq.executeQuery():"+ex.getMessage()) ;
}
}
public void closeStmt()
{ try
{ stmt.close();}
catch(SQLException ex)
{
ex.printStackTrace() ;
}
}
public void closeConn()
{ try
{ conn.close();}
catch(SQLException ex)
{
ex.printStackTrace() ;
} }}
网页文件代码:
<%@ page contentType="text/html; charset=GB2312" %>
<%@ page import="java.sql.*" %>
<%@ page errorPage="Default_error.jsp" %>
<html>
<head>
<title>
Default
</title>
</head>
<jsp:useBean id="dbBean" scope="session" class="myprg.firm" />
<jsp:useBean id="defaultBeanId" scope="session" class="myprg.DefaultBean" />
<jsp:setProperty name="defaultBeanId" property="*" />
<body bgcolor="#ffffff">
<h1>
JBuilder Generated JSP
</h1>
<form method="post" action="Default.jsp">
<br>Enter new value : <input name="sample"><br>
<br><br>
<input type="submit" name="Submit" value="Submit">
<input type="reset" value="Reset">
<br>
Value of Bean property is :<jsp:getProperty name="defaultBeanId" property="sample" />
</form>
<table border="1" width="100%" cellspacing="0" cellpadding="0">
<%
try
{
String sqlStr="Select Dept_Code,Dept_Name From EM_DeptArchives";
String sqlStr2="insert EM_DeptArchives (Dept_Code,Dept_Name) Values('6','拍拍部')";
//String sqlStr="Select * from EM_PersonArchives";
dbBean.executUpdate(sqlStr2);
ResultSet rs=dbBean.executeQuery(sqlStr) ;
rs.first();
while(rs.next())
%>
<tr >
<td width="20%"> <%=rs.getString("Dept_Code") %></td>
<td width="40%"> <%=rs.getString("Dept_Name").getBytes("8859_1") %></td>
<td width="40%"> Hello</td>
</tr>
<%
rs.close();
}
catch(SQLException ex)
{
System.err.println("aq.executeQuery():"+ex.getMessage()) ;
}dbBean.closeStmt();
dbBean.closeConn();
%></table>
</body>
</html>提示错误::
aq.executeQuery():[Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.
解决方案 »
- 请教大牛:java bs结构整合pp 的cs结构
- java页面中${base}取出的是什么值?
- 关于c3p0的配置启动tomcat出现的异常...
- 如何获取某一IP对应的客户端MAC地址
- 如何得到tomcat安装目录的temp目录路径?
- jsp 如何获得 select MULTIPLE 中的值
- 小弟刚学javamail,做了一个最简单的例子,可是根本发不出去,请各位大侠帮忙看一下。不胜感激:错误信息:org.apache.jasper.JasperExce
- 兄弟们,帮帮忙吧,急需一个能生成不重复随机数的代码~~!!!
- webshpere 安装后 tomcat4.0启动时出现JVM_Bind错误.
- Servlet 页面跳转后,接收不到登陆信息
- Servlet程序问题
- transaction begin,commit, rollback的问题
所以如果通过jdbc连接sql server 就必须给数据库打补丁,许多人都说sp3,sp4都可以,但我只用过sp3.
(其实很久以前我就听说过需要打补丁,在网上找的时候发现sp3有3个,不知道自己该用哪一个,后来一狠心全下载下来,准备都安了,没想到还有人说按这3个还有个顺序呢,)
现在我上下载的第3个,叫sql2ksp3.exe,下下来是exe文件,执行它,随便选个文件夹运行,然后打开该文件夹,执行里面的setup.bat,这样你的数据库就打上了补丁了,并且1433端口就监听了,
然后你在执行你的连接文件,就可以了,
有的时候还会出现一个问题说是什么sa用户没有建立可信任的连接,好象是这么个意思我记得不是很清楚了,这是因为你安装数据库的时候选用的是 windows验证,应该选用混合模式,你打开企业管理器,选操作,点属性,在安全性中选择sql server 和windows这个选项,点确定,然后重启sqlserver和你的web服务器,在运行你的连接文件应该就可以了,
{
conn=DriverManager.getConnection(strDbUrl,"sa","");
stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
//stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE) ;
rs=stmt.executeQuery(sql) ;
}
catch(SQLException ex)
{
System.err.println("aq.executeQuery():"+ex.getMessage()) ;
}
这里报错说明驱动加载上了 你的conn获取肯定错误 没用过sql server不过你url的端口号不会自己改成80了吧 那肯定是有冲突的
这一行加入个端口
"jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=KCBusMag;SelectMethod=cursor";
并打上Sqlserver200补丁后,还有问题??
原来是用odbc的,有问题,后试用jdbc,出现了同样的问题??
aq.executeQuery():[Microsoft][SQLServer 2000 Driver for JDBC]No ResultSet set was produced.
aq.executeQuery():[Microsoft][SQLServer 2000 Driver for JDBC]Invalid operation for the current cursor position.//[Odbc]
//String strDbDriver="sun.jdbc.odbc.JdbcOdbcDriver";
//String strDbUrl="jdbc:odbc:firm";
//[Jdbc]
String strDbDriver2="com.microsoft.jdbc.sqlserver.SQLServerDriver";
String strDbUrl2="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=KCBusMag;SelectMethod=cursor";
原自学过spring,hibernate等,现在又得重新熟悉,谢谢
连接mysql与odbc,jdbc连接sqlser2000出现类似错误:
aq.executeQuery():After end of result set还是查询出来的结果集,受到游标影响
这个不知怎么处理?
2 去精华区找一个帖子,里面有详细介绍!
3 看这里 http://www.java2000.net/viewthread.jsp?tid=394
Connection con = null; try {
//ロードの駆動
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
//データベースにつながります
con = DriverManager
.getConnection("jdbc:odbc:test","sa","admin");
} catch (Exception e) {
e.printStackTrace();
} return con;
}在上面import java.sql.*;就可以了。我就这么用的
可能是操作系统关系吧 win2003也会有问题,我还是用xp去好
谢谢各位了