我现在实现一个功能,在java类中用一个方法从sql server中导出一些信息到foxpro的dbf文件中,连接后,插入记录都可以,可是不知道如何删除dbf文件里面的记录,另外,我想插入一个图片到dbf文件中,是general数据类型,不知道如何实现?恳请高手赐教。
下面是我的程序:
try
{
CommFunction cmf = new CommFunction();
String filePath = request.getSession().getServletContext().
getRealPath("/") + "Reserve\\MiddleEmp\\";
Connection dbfconn = null;
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
String url = "jdbc:odbc:DRIVER={MICROSOFT FOXPRO VFP DRIVER (*.DBF)};SourceType=DBF;SourceDB=";
url += filePath;
dbfconn = DriverManager.getConnection(url);
}catch(Exception ex)
{
System.err.println("数据库连接过程中出现错误!");
rtnCode = 2;
}
if(dbfconn != null)
{
Statement stmtQue = conn.createStatement();
Statement stmtIns = dbfconn.createStatement();
ResultSet rs = null;
String empCode = "", tmpVal = "", delSql = "", insertSql = "", frontSql = "", backSql = "";
int i = 0, j = 0; //先清除原有记录
//这里我这么写不起作用
delSql = "delete from hbgbku";
stmtIns.executeUpdate(delSql); String strsql = "select col005 as 工号, col006 as 姓名 from tableempbase order by col005";
//一共写入19个字段
frontSql = "insert into hbgbku(工号,姓名) values(";
rs = stmtQue.executeQuery(strsql);
//为了防止重复导入,先删除原有记录,再插入新记录
while(rs.next())
{
//每次循环时需要置为空
backSql = "";
empCode = cmf.IsNull(rs.getString("工号"));
backSql += "'" + empCode + "',";
backSql += "'" + cmf.IsNull(rs.getString("姓名")) + "')";
insertSql = frontSql + backSql;
stmtIns.addBatch(insertSql);
if(i == 100)
{
stmtIns.executeBatch();
stmtIns.clearBatch();
i = 0;
}
i++;
}
if(i > 0)
stmtIns.executeBatch(); if(rs != null)
rs.close();
if(stmtQue != null)
stmtQue.close();
if(stmtIns != null)
stmtIns.close();
if(dbfconn != null)
dbfconn.close();
}
}catch(Exception ex)
{
ex.printStackTrace();
}
下面是我的程序:
try
{
CommFunction cmf = new CommFunction();
String filePath = request.getSession().getServletContext().
getRealPath("/") + "Reserve\\MiddleEmp\\";
Connection dbfconn = null;
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
String url = "jdbc:odbc:DRIVER={MICROSOFT FOXPRO VFP DRIVER (*.DBF)};SourceType=DBF;SourceDB=";
url += filePath;
dbfconn = DriverManager.getConnection(url);
}catch(Exception ex)
{
System.err.println("数据库连接过程中出现错误!");
rtnCode = 2;
}
if(dbfconn != null)
{
Statement stmtQue = conn.createStatement();
Statement stmtIns = dbfconn.createStatement();
ResultSet rs = null;
String empCode = "", tmpVal = "", delSql = "", insertSql = "", frontSql = "", backSql = "";
int i = 0, j = 0; //先清除原有记录
//这里我这么写不起作用
delSql = "delete from hbgbku";
stmtIns.executeUpdate(delSql); String strsql = "select col005 as 工号, col006 as 姓名 from tableempbase order by col005";
//一共写入19个字段
frontSql = "insert into hbgbku(工号,姓名) values(";
rs = stmtQue.executeQuery(strsql);
//为了防止重复导入,先删除原有记录,再插入新记录
while(rs.next())
{
//每次循环时需要置为空
backSql = "";
empCode = cmf.IsNull(rs.getString("工号"));
backSql += "'" + empCode + "',";
backSql += "'" + cmf.IsNull(rs.getString("姓名")) + "')";
insertSql = frontSql + backSql;
stmtIns.addBatch(insertSql);
if(i == 100)
{
stmtIns.executeBatch();
stmtIns.clearBatch();
i = 0;
}
i++;
}
if(i > 0)
stmtIns.executeBatch(); if(rs != null)
rs.close();
if(stmtQue != null)
stmtQue.close();
if(stmtIns != null)
stmtIns.close();
if(dbfconn != null)
dbfconn.close();
}
}catch(Exception ex)
{
ex.printStackTrace();
}
楼主【taijiquan】截止到2008-06-30 18:24:16的历史汇总数据(不包括此帖):
发帖数:0 发帖分:0
结贴数:0 结贴分:0
未结数:0 未结分:0
结贴率:-------------------结分率:-------------------
如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html
不过你也可以这样,你可以把一个空的dbf文件放到resource中,需要的时候释放出来覆盖老的dbf文件。