场景介绍:——Java测试连接程序
操作系统:XP SP3
计算机名:roydd
测试代码:import java.sql.*;public class JDBCDemo
{
public static void main(String args[])
{ Connection connDbf = null;
PreparedStatement psDbf = null;
ResultSet rsDbf = null;
//Foxprotest为foxpro数据库所在计算机名,xsd为共享文件夹名,X1.DBF为数据文件
String filePath = "//Foxprotest/xsd/X1.DBF";
//数据库表名
String fileName = "X1";
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String strurl = "jdbc:odbc:Driver={Microsoft Visual FoxPro Driver};SourceType=DBF;SourceDB=" + filePath + ";Exclusive=No;";
connDbf = DriverManager.getConnection(strurl);
String sql = "select * from " + fileName;
psDbf = connDbf.prepareStatement(sql);
rsDbf = psDbf.executeQuery();
while(rsDbf.next()){
System.out.println(rsDbf.getString("DZBH"));
}
}catch (ClassNotFoundException e) {
e.printStackTrace(System.err);
} catch (SQLException e) {
e.printStackTrace(System.err);
}
}
}*******************************************************************************************——VF数据库
操作系统:win98
计算机名:Foxprotest
数据库版本: VF2.6
自由表名: X1******************************************************************************************现在,我的代码在本地roydd机器上测试可以正常读取本地VF数据库,但是去读取Foxprotest上的VF数据库就报错java.sql.SQLException: [Microsoft][ODBC Visual FoxPro Driver]Fox Error 1
我已经将Foxprotest机器上的VF数据库项目目录共享在局域网上,在我本地roydd机器上已经可以打开该共享目录。请各位教我,我的Java应用程序为什么会报错,是路径写错,还是哪设置不到位?又或者
操作系统:XP SP3
计算机名:roydd
测试代码:import java.sql.*;public class JDBCDemo
{
public static void main(String args[])
{ Connection connDbf = null;
PreparedStatement psDbf = null;
ResultSet rsDbf = null;
//Foxprotest为foxpro数据库所在计算机名,xsd为共享文件夹名,X1.DBF为数据文件
String filePath = "//Foxprotest/xsd/X1.DBF";
//数据库表名
String fileName = "X1";
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String strurl = "jdbc:odbc:Driver={Microsoft Visual FoxPro Driver};SourceType=DBF;SourceDB=" + filePath + ";Exclusive=No;";
connDbf = DriverManager.getConnection(strurl);
String sql = "select * from " + fileName;
psDbf = connDbf.prepareStatement(sql);
rsDbf = psDbf.executeQuery();
while(rsDbf.next()){
System.out.println(rsDbf.getString("DZBH"));
}
}catch (ClassNotFoundException e) {
e.printStackTrace(System.err);
} catch (SQLException e) {
e.printStackTrace(System.err);
}
}
}*******************************************************************************************——VF数据库
操作系统:win98
计算机名:Foxprotest
数据库版本: VF2.6
自由表名: X1******************************************************************************************现在,我的代码在本地roydd机器上测试可以正常读取本地VF数据库,但是去读取Foxprotest上的VF数据库就报错java.sql.SQLException: [Microsoft][ODBC Visual FoxPro Driver]Fox Error 1
我已经将Foxprotest机器上的VF数据库项目目录共享在局域网上,在我本地roydd机器上已经可以打开该共享目录。请各位教我,我的Java应用程序为什么会报错,是路径写错,还是哪设置不到位?又或者
解决方案 »
- 写一个ArrayList类的代理,实现和ArrayList中完全相同的功能,并可以计算每个方法运行的时间。
- 怎么选择jtable的一行数据?
- swing 2个JTable的拖拽
- 急救:如何在jpanel中画出一行字 如:“我爱你”但是"爱"字用红色显示
- 这里的this 指的什么啊?
- qingwei请大侠指点迷经,怎样打jar包啊? 怎样把自己得东西发布在JAVA中?
- 关于Applet里面得到图片属性的问题
- 下载并解包了Ecplise,但就是没有IDE环境,请问如何配置?
- 请问如何卸载jdk?
- 为什么think in java中要提醒不要滥用继承?
- eclipse连接oracle 10g数据库时出错
- 怎么使用chrome内核开发浏览器
use \\Foxprotest\xsd\X1.DBF
能否成功
我对foxpro不大了解,你的意思是在本地roydd机器的VF上输入这个命令,看能访问到Foxprotest机器上的X1.DBF文件么?这个use \\Foxprotest\xsd\X1.DBF我还要查查教程在哪输入?!
在VFP的命令窗口下输入
--------------------------------------------------------------------------------
一:创建新的ODBC数据资源
1.windows2000的控制面板-》管理工具-》数据源(ODBC),出现下面的对话框,在对话框的”用户DSN”:选择“Visual FoxPro Database”的用户数据源,单击“添加”按纽。
2.在出现的对话框里,选择使用“Microsoft Visual Foxpro Driver”驱动程序来安装数据资源,单击“完成”按纽。
3.在弹出来的答话框,我们设置“Data Source Name”为JDBCDemo.java,“DataBase type”项为“Free Table directory”,然后在“path:”项指定JDBCDemo.java所在的目录为ODBC数据资源的目录。再选择”Options“,把Fetch data om background选上。Collating sequence: Machine
2.JDBCDemo.java/*
* @(#)JDBCDemo.java 2003/9/29
*/
import java.sql.*;/**
* 演示JDBC操作数据库的各项功能,包括表的创建
* (CREATE)和删除(DROP),记录的插入(INSERT),
* 选择(SELECT)和更改(UPDATE)等操作 。 */
public class JDBCDemo
{
public static void main(String args[])
{
try {
Statement stmt;
PreparedStatement pstmt;
ResultSet rs;// 加载 jdbc-odbc 桥驱动程序
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//定义JDBC URL
String url = "jdbc:odbc:JDBCDemo";//得到与数据库的连接
Connection con DriverManager.getConnection (url);
//显示URL和连接信息
System.out.println("URL: " + url);
System.out.println("Connection: " + con);//得到一个Statement对象
stmt = con.createStatement(); //如果表DemoTable已经存在,则删除之,否则,抛掷一个异常
System.out.println("DROP TABLE DemoTable, if it exists.");
try{stmt.executeUpdate("DROP TABLE DemoTable"); }catch(Exception e){
System.out.print(e);
System.out.println("No existing table to delete");
}//在数据库中创建一个表DemoTable
stmt.executeUpdate("CREATE TABLE DemoTable ("+ "test_id int,test_val char(15) not null)");
System.out.println("table DemoTable created!");//在表中插入一些值
stmt.executeUpdate("INSERT INTO DemoTable ("+ "test_id, test_val) VALUES(1,'One')");
stmt.executeUpdate("INSERT INTO DemoTable ("+ "test_id, test_val) VALUES(2,'Two')");
stmt.executeUpdate("INSERT INTO DemoTable ("+ "test_id, test_val) VALUES(3,'Three')");
stmt.executeUpdate("INSERT INTO DemoTable ("+ "test_id, test_val) VALUES(4,'Four')");
stmt.executeUpdate("INSERT INTO DemoTable ("+ "test_id, test_val) VALUES(5,'Five')");//得到另一个Statement对象
stmt = con.createStatement();//查询数据库中的表DemoTable,得到以test_id排序后的所有记录,
//并存储在ResultSet对象rs中
rs = stmt.executeQuery("SELECT * from DemoTable ORDER BY test_id");//显示表DemoTable中的所有记录
System.out.println("Display all results:");
while(rs.next())
{
int theInt= rs.getInt("test_id");
String str = rs.getString("test_val");
System.out.println("\ttest_id= " + theInt + "\tstr = " + str);
}// 创建已准备好的语句,更新“DemoTable”表中
// 某条记录的test_val字段。
// 已准备好的语句接受两个参数。
pstmt = con.prepareStatement("UPDATE DemoTable SET test_val = ? WHERE test_id = ?");//更改表DemoTable中的第2条记录的test_val字段的值
// 充填UPDATE语句中的“?”,并执行UPDATE语句
pstmt.setString(1, "Hello!");//就是说第一个参数test_val为Hello!
pstmt.setInt(2, 2);//就是说第二个参数test_id为2
pstmt.executeUpdate();
System.out.println("Update row number 2: OK.");//显示表DemoTable中更新后的第2条记录
stmt = con.createStatement();
rs = stmt.executeQuery("SELECT * from DemoTable ORDER BY test_id");
System.out.println("Display row 2:");
if (rs.next() && rs.next())
{
int theInt= rs.getInt("test_id");
String str = rs.getString("test_val");
System.out.println("\ttest_id= " + theInt + "\tstr = " + str);}con.close(); //关闭与数据库的连接
}catch( Exception e ) {
e.printStackTrace();
}
}
}在windows2000+jdk1.3+Visual Foxpro 6.0上通过测试。
以下小丑修正:以上代码是正确的,我测试了一下.只有一句:
*********************************
//得到与数据库的连接
Connection con DriverManager.getConnection (url);
********************************
掉了个=;我写了个简单的测试与数据库的连接.(ODBC的建立照以上,这里我取名为OdbcJava).这里在JDK1.5.0_07下测试通过.import java.sql.*;public class Jdbc {
public static void main(String args[]) {
Connection con;
String driver="sun.jdbc.odbc.JdbcOdbcDriver";
String url = "jdbc:odbc:OdbcJava";
try{
Class.forName(driver);
}catch(Exception e){
System.out.println("ODBC数据源连接错误:"+e.toString());
}
try{
con=DriverManager.getConnection(url);
}catch(Exception e){
System.out.println("VFP数据库连接错误:"+e.toString());
}
System.out.println("OK..VFP数据库连接成功!");
}
}
"Provider=vfpoledb;Data Source=C:\DatabasePath\MyDatabase.dbc;"
或
"Provider=VFPOLEDB.1;Data Source=d:\temp;Password="";Collating Sequence=MACHINE"
或
"Provider=VFPOLEDB.1;Data Source=\\192.168.0.1\zz;Password="";Collating Sequence=MACHINE"
或
"provider=VFPOLEDB.1;data source=d:\;user id=admin;password="
或老版本DBF,用JET 连接:
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\\192.168.0.1\zz;Extended Properties=dbaSE 5.0;Persist Security Info=False"
" Driver={Microsoft dBASE Driver (*.dbf)}; DriverID=277;Dbq=c:\DatabasePath"
注意在书写sql语句时必须指定文件名(如"Select Name, Address From Clients.dbf").
Visual Foxpro(有数据库容器):
" Driver={Microsoft Visual Foxpro Driver};UID=; SourceType=DBC;SourceDB=C:\DatabasePath\MyDatabase.dbc;Exclusive=No"
Visual Foxpro(无数据库容器):
" Driver={Microsoft Visual Foxpro Driver};UID=; SourceType=DBF;SourceDB=C:\DbfPath\MyDdbf.dbf;Exclusive=No" Driver={Microsoft Visual FoxproDriver};
SourceType=DBF;SourceDB=\\192.168.0.1\temp;
Exclusive=No;Collate=Machine;NULL=NO;DELETED=NO;BACKGROUNDFETCH=NO"
数据库表
Driver={Microsoft Visual FoxPro Driver};SourceType=DBC;SourceDB=c:\myvfpdb.dbc;Exclusive=No;NULL=NO;Collate=Machine;BACKGROUNDFETCH=NO;DELETED=NO;
自由表
Driver={Microsoft Visual FoxPro Driver};SourceType=DBF;SourceDB=c:\myvfpdbfolder;E
java.sql.SQLException: [Microsoft][ODBC Visual FoxPro Driver]Fox Error 1
很无奈啊~
我已经将foxpro的项目rsgl文件夹设置为共享,你说的本地文件夹映射是要另外在设置下的吗?因为我们系统处理的业务,需要客户老系统的数据做基础数据。
car.dbf 位于D盘的根目录下。
测试了一下老是报下面的异常:
java.sql.SQLException: [Microsoft][ODBC Visual FoxPro Driver]File 'car.dbf' does not exist.
知道是哪里出问题吗