Eclipse用JDBC-ODBC桥连接的方式连接SQLServer2005数据库的问题
小弟初学JDBC,看的是韩顺平的视频,但是,第一个用JDBC-ODBC桥连接的方式连接数据库就出错,找了大半天还是毫无头绪,所以,请高手指点迷经下面是代码:(我仔细核对过...
小弟初学JDBC,看的是韩顺平的视频,但是,第一个用JDBC-ODBC桥连接的方式连接数据库就出错,找了大半天还是毫无头绪,所以,请高手指点迷经
下面是代码:(我仔细核对过,应该没错的,还有我的表也没错)
/**
* JDBC-ODBC桥连接方式操作数据库PFQ的演示
*
* 1.配置数据源:控制面板->管理工具->数据源(ODBC)
* 2.在程序中连接数据源
*
* @author CrazyMan
*
*/
package com.JDBC.Test;
import java.sql.*;
public class Test_1 {
public static void main(String[]args){
Connection ct = null;
Statement sm = null;
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
//1.加载驱动。(把需要的驱动加载入内存)
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
//2.得到数据库的连接。(参数1:要连接的数据源,参数2:数据库的用户名,参数3:数据库的密码)
ct = DriverManager.getConnection("jdbc:odbc:myFirstTest", "sa", "321123");
//3.得到数据库的操作者。(可以用这个对象管理数据库:发送SQL语句到数据库)
//可以进行CRUD操作
sm = ct.createStatement();
//4.Statement对象sm.executeUpdate("...")方法可以进行CUD操作
//传入要执行的SQL语句
int i = sm.executeUpdate("insert into stu values ('pfq', 21)");
if(i == 0){
System.out.println("操作成功!");
}else{
System.out.println("操作失败!");
}
}catch(Exception e){
e.printStackTrace();
}finally{
//在此处要 【释放资源】
//但要注意顺序:后创建的,要先释放
try{
//为了程序的健壮,加个if()语句
if(sm != null){
sm.close();
}
if(ct != null){
ct.close();
}
}catch(Exception e){
e.printStackTrace();
}
}
}
}
以下是出错信息:
java.sql.SQLException: [Microsoft][ODBC 驱动程序管理器] 无效的字符串或缓冲区长度
at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6956)
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7113)
at sun.jdbc.odbc.JdbcOdbc.SQLGetDataString(JdbcOdbc.java:3906)
at sun.jdbc.odbc.JdbcOdbcResultSet.getDataString(JdbcOdbcResultSet.java:5697)
at sun.jdbc.odbc.JdbcOdbcResultSet.getString(JdbcOdbcResultSet.java:353)
at sun.jdbc.odbc.JdbcOdbcConnection.buildTypeInfo(JdbcOdbcConnection.java:1503)
at sun.jdbc.odbc.JdbcOdbcConnection.initialize(JdbcOdbcConnection.java:381)
at sun.jdbc.odbc.JdbcOdbcDriver.connect(JdbcOdbcDriver.java:174)
at java.sql.DriverManager.getConnection(DriverManager.java:579)
at java.sql.DriverManager.getConnection(DriverManager.java:221)
at com.JDBC.Test.Test_1.main(Test_1.java:21)
小弟万分感谢!
我装的是Java7,而且在输入sun.jdbc.odbc.然后它并没有显示提示(按Alt+/也没用)
我看视频里,韩老师在输入sun.jdbc.odbc.时候就会出来很多提示,其中就有JdbcOdbcDriver
我不知道这是不是因为我是的Java7的原因?
小弟现在只有3分了,(但最少是5分)要不不会这么吝啬的!!!!!! 展开
下面是代码:(我仔细核对过,应该没错的,还有我的表也没错)
/**
* JDBC-ODBC桥连接方式操作数据库PFQ的演示
*
* 1.配置数据源:控制面板->管理工具->数据源(ODBC)
* 2.在程序中连接数据源
*
* @author CrazyMan
*
*/
package com.JDBC.Test;
import java.sql.*;
public class Test_1 {
public static void main(String[]args){
Connection ct = null;
Statement sm = null;
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
//1.加载驱动。(把需要的驱动加载入内存)
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
//2.得到数据库的连接。(参数1:要连接的数据源,参数2:数据库的用户名,参数3:数据库的密码)
ct = DriverManager.getConnection("jdbc:odbc:myFirstTest", "sa", "321123");
//3.得到数据库的操作者。(可以用这个对象管理数据库:发送SQL语句到数据库)
//可以进行CRUD操作
sm = ct.createStatement();
//4.Statement对象sm.executeUpdate("...")方法可以进行CUD操作
//传入要执行的SQL语句
int i = sm.executeUpdate("insert into stu values ('pfq', 21)");
if(i == 0){
System.out.println("操作成功!");
}else{
System.out.println("操作失败!");
}
}catch(Exception e){
e.printStackTrace();
}finally{
//在此处要 【释放资源】
//但要注意顺序:后创建的,要先释放
try{
//为了程序的健壮,加个if()语句
if(sm != null){
sm.close();
}
if(ct != null){
ct.close();
}
}catch(Exception e){
e.printStackTrace();
}
}
}
}
以下是出错信息:
java.sql.SQLException: [Microsoft][ODBC 驱动程序管理器] 无效的字符串或缓冲区长度
at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6956)
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7113)
at sun.jdbc.odbc.JdbcOdbc.SQLGetDataString(JdbcOdbc.java:3906)
at sun.jdbc.odbc.JdbcOdbcResultSet.getDataString(JdbcOdbcResultSet.java:5697)
at sun.jdbc.odbc.JdbcOdbcResultSet.getString(JdbcOdbcResultSet.java:353)
at sun.jdbc.odbc.JdbcOdbcConnection.buildTypeInfo(JdbcOdbcConnection.java:1503)
at sun.jdbc.odbc.JdbcOdbcConnection.initialize(JdbcOdbcConnection.java:381)
at sun.jdbc.odbc.JdbcOdbcDriver.connect(JdbcOdbcDriver.java:174)
at java.sql.DriverManager.getConnection(DriverManager.java:579)
at java.sql.DriverManager.getConnection(DriverManager.java:221)
at com.JDBC.Test.Test_1.main(Test_1.java:21)
小弟万分感谢!
我装的是Java7,而且在输入sun.jdbc.odbc.然后它并没有显示提示(按Alt+/也没用)
我看视频里,韩老师在输入sun.jdbc.odbc.时候就会出来很多提示,其中就有JdbcOdbcDriver
我不知道这是不是因为我是的Java7的原因?
小弟现在只有3分了,(但最少是5分)要不不会这么吝啬的!!!!!! 展开
3个回答
展开全部
从提示信息看,问题在ODBC数据源设置
1, 确保你设置的ODBC数据源,在控制面板手工测试可以通过。
2,检查数据源和用户名密码
jdbc:odbc:<data-source-name>[;<attribute-name>=<attribute-value>]*
3,insert into stu values ('pfq', 21)" 这个SQL最好改写给出列名,如
insert into stu(name, number) values ('pfq', 21)"
最后说明一下,JDBC-ODBC桥连接方式是JAVA早期使用的方式,当时的情况是各数据库企业还没开发JDBC驱动。其效率低下,依赖于ODBC数据源。实战中早就废弃了。请尽量使用JDBC直接连接数据库。
另外,
1,JDBC-ODBC 驱动是无需安装的,JDK标准版自带
2, 代码怎么两次Class.forName。。。
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
//1.加载驱动。(把需要的驱动加载入内存)
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
//2.得到数据库的连接。(参数1:要连接的数据源,参数2:数据库的用户名,参数3:数据库的密码)
3, 下面这段代码也有问题。返回值0,表示操作失败,返回值非零,表示更新的行数。本例应该返回1,才操作成功。
if(i == 0){
System.out.println("操作成功!");
}else{
System.out.println("操作失败!");
}
1, 确保你设置的ODBC数据源,在控制面板手工测试可以通过。
2,检查数据源和用户名密码
jdbc:odbc:<data-source-name>[;<attribute-name>=<attribute-value>]*
3,insert into stu values ('pfq', 21)" 这个SQL最好改写给出列名,如
insert into stu(name, number) values ('pfq', 21)"
最后说明一下,JDBC-ODBC桥连接方式是JAVA早期使用的方式,当时的情况是各数据库企业还没开发JDBC驱动。其效率低下,依赖于ODBC数据源。实战中早就废弃了。请尽量使用JDBC直接连接数据库。
另外,
1,JDBC-ODBC 驱动是无需安装的,JDK标准版自带
2, 代码怎么两次Class.forName。。。
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
//1.加载驱动。(把需要的驱动加载入内存)
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
//2.得到数据库的连接。(参数1:要连接的数据源,参数2:数据库的用户名,参数3:数据库的密码)
3, 下面这段代码也有问题。返回值0,表示操作失败,返回值非零,表示更新的行数。本例应该返回1,才操作成功。
if(i == 0){
System.out.println("操作成功!");
}else{
System.out.println("操作失败!");
}
追问
1>将多出来的Class.forName(...)删掉
2>重新配置数据源,并测试通过
3>核对用户名与密码,保证Java代码中的与先前设置的一样
4>加入对应的字段名
....
但还是报同样的错误!!!
前辈,快快救救我吧!
展开全部
首先要保证驱动程序已经安装成功!在控制面板——管理工具——数据源 里面有没有你安装的驱动程序,
SQLServer2005 应该会在安装的时候自动把odbc的驱动安装进去的,找到它的名称, url="jdbc:odbc:+名称"; 也就是第一个参数的位置
DriverManager.getConnection("jdbc:odbc:myFirstTest", "sa", "321123");
SQLServer2005 应该会在安装的时候自动把odbc的驱动安装进去的,找到它的名称, url="jdbc:odbc:+名称"; 也就是第一个参数的位置
DriverManager.getConnection("jdbc:odbc:myFirstTest", "sa", "321123");
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
SQLServer2005数据库
驱动代码是 这个 com.microsoft.sqlsever.jdbc.SQLSeverDriver
你的那个驱动代码 是access 数据库的
望采纳
驱动代码是 这个 com.microsoft.sqlsever.jdbc.SQLSeverDriver
你的那个驱动代码 是access 数据库的
望采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询