JavaBridgedll,JNA调用dll时的参数传递问题

1,JNA调用dll时的参数传递问题这种参数 , 要变通处理,要么在C/C++中写一个bridge中转一下 。
2 , 怎么用java导出word文档java导出word大致有6种解决方案:1:Jacob是Java-COM Bridge的缩写,它在Java与微软的COM组件之间构建一座桥梁 。使用Jacob自带的DLL动态链接库 , 并通过JNI的方式实现了在Java平台上对COM程序的调用 。DLL动态链接库的生成需要windows平台的支持 。该方案只能在windows平台实现,是其局限性 。2:Apache POI包括一系列的API , 它们可以操作基于MicroSoft OLE 2 Compound Document Format的各种格式文件,可以通过这些API在Java中读写Excel、Word等文件 。他的excel处理很强大,对于word还局限于读取,目前只能实现一些简单文件的操作,不能设置样式 。3:Java2word是一个在java程序中调用 MS Office Word 文档的组件(类库) 。该组件提供了一组简单的接口,以便java程序调用他的服务操作Word 文档 。这些服务包括: 打开文档、新建文档、查找文字、替换文字,插入文字、插入图片、插入表格,在书签处插入文字、插入图片、插入表格等 。填充数据到表格中读取表格数据,1.1版增强的功能: 指定文本样式 , 指定表格样式 。如此,则可动态排版word文档 。是一种不错的解决方案 。4:iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库 。通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件 。功能强大 。5:JSP输出样式,该方案实现简单,但是处理样式有点缺陷,简单的导出可以使用 。6:用XML做就很简单了 。Word从2003开始支持XML格式 , 大致的思路是先用office2003或者2007编辑好word的样式,然后另存为xml,将xml翻译为FreeMarker模板,最后用java来解析FreeMarker模板并输出Doc 。经测试这样方式生成的word文档完全符合office标准,样式、内容控制非常便利,打印也不会变形,生成的文档和office中编辑文档完全一样 。要生成的数据 , 在java后台必须是用map格式,这个你检查一下有没有问题 。如果有list,也要放到map里面去 。hashmapdatamap = new hashmap(); configuration conf = new configuration(); template t = conf.gettemplate(filename); file docfile = new file(filepath + "/" + docname); out = new outputstreamwriter(new fileoutputstream(docfile), "utf-8"); t.process(datamap, out);
3 , Java中如何实现与后台数据库的连接用JAVA连接数据库主要有两种方式,一是用JDBC-ODBC桥来连接 , 二是用相关厂商提供的相应驱动程序来连接,首先谈谈第一种连接 。JDBC-ODBC桥接器是用JdbcOdbc.Class和一个用于访问ODBC驱动程序的本地库实现的 。对于WINDOWS平台,该本地库是一个动态连接库DLL(JDBCODBC.DLL) 。由于JDBC在设计上与ODBC很接近 。在内部,这个驱动程序把JDBC的方法映射到ODBC调用上,这样,JDBC就可以和任何可用的ODBC驱动程序进行交互了 。这种桥接器的优点是 , 它使JDBC目前有能力访问几乎所有的数据库 。通行方式如图所示: 应用程序---JDBC API---JDBC-ODBC---ODBC API---ODBC层---数据源 具体操作方法为: 首先打开控制面板的管理工具,打开数据源(ODBC),在用户DSN里面添加数据源(即你要连接的数据库的名字),在这里假定连接SQL SERVER 2000的GoodsSupply数据库 。名称填写你要连接的数据库的名称(GoodsSupply),然后逐步设置,如果选用了使用SQL-SERVER密码认证的话,就要输入相应的用户名及密码连接到数据库 。一路下一步设置完成 。在JAVA里面编写程序进行测试,在这里我的程序是让用户输入任意的表名与与列名,把该列的所有数据输出 。源代码如下: import java.io.BufferedReader; import java.io.InputStreamReader; import java.sql.*; public class ODBCBridge public static void main(String[] args) String url="jdbc:odbc:GoodsSupply"; Statement sm=null; String command=null; ResultSet rs=null; String tableName=null; String cName=null; String result=null; BufferedReader input=new BufferedReader(new InputStreamReader(System.in)); try try Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //加载驱动 }catch(ClassNotFoundException e)System.out.println("Can not load Jdbc-Odbc Bridge Driver"); System.err.print("ClassNotFoundException:"); System.err.println(e.getMessage()); } Connection con=DriverManager.getConnection(url,"USER","PASSWORD"); //使用SQL-SERVER2000认证 DatabaseMetaData dmd=con.getMetaData(); //DMD为连接的相应情况 System.out.println("连接的数据库:"+dmd.getURL()); System.out.println("驱动程序:"+dmd.getDriverName()); sm=con.createStatement(); System.out.println("输入表名"); tableName=input.readLine(); while(true) System.out.println("输入列名(为空时程序结束):"); cName=input.readLine(); if(cName.equalsIgnoreCase("")) break; command="select "+cName+" from "+tableName; rs=sm.executeQuery(command); //执行查询 if(!rs.next()) System.out.println("表名或列名输入有误"); else System.out.println("查询结果为:"); do result=rs.getString(cName); //数据库语言设置为中文,不用转换编码 //result=new String(result.getBytes("ISO-8859-1"),"GB2312"); System.out.println(result); }while(rs.next()); } } }catch(SQLException ex) System.out.println("SQLException:"); while(ex!=null) System.out.println("Message:"+ex.getMessage()); ex=ex.getNextException(); } }catch(Exception e) System.out.println("IOException"); } } }【JavaBridgedll,JNA调用dll时的参数传递问题】
4,如何实现java与数据库的连接jdbc连接数据库Class.forName("com.mysql.jdbc.Driver");///不同数据库不同这是以mysql为例String url ="jdbc:mysql://localhost/myDB?user=soft&password=soft1234&useUnicode=true&characterEncoding=8859_1"//myDB为数据库名//后面是用户名密码Connection conn= DriverManager.getConnection(url);Statement stmt=conn.createStatement(url);ResultSet rs=stmt.excuteQuery(sql);这个是大体过程同上用java连接数据库主要有两种方式,一是用jdbc-odbc桥来连接,二是用相关厂商提供的相应驱动程序来连接,首先谈谈第一种连接 。jdbc-odbc桥接器是用jdbcodbc.class和一个用于访问odbc驱动程序的本地库实现的 。对于windows平台 , 该本地库是一个动态连接库dll(jdbcodbc.dll) 。由于jdbc在设计上与odbc很接近 。在内部,这个驱动程序把jdbc的方法映射到odbc调用上,这样 , jdbc就可以和任何可用的odbc驱动程序进行交互了 。这种桥接器的优点是,它使jdbc目前有能力访问几乎所有的数据库 。通行方式如图所示: 应用程序---jdbc api---jdbc-odbc---odbc api---odbc层---数据源 具体操作方法为: 首先打开控制面板的管理工具,打开数据源(odbc),在用户dsn里面添加数据源(即你要连接的数据库的名字),在这里假定连接sql server 2000的goodssupply数据库 。名称填写你要连接的数据库的名称(goodssupply) , 然后逐步设置,如果选用了使用sql-server密码认证的话,就要输入相应的用户名及密码连接到数据库 。一路下一步设置完成 。在java里面编写程序进行测试,在这里我的程序是让用户输入任意的表名与与列名,把该列的所有数据输出 。源代码如下: import java.io.bufferedreader; import java.io.inputstreamreader; import java.sql.*; public class odbcbridge { public static void main(string[] args) { string url="jdbc:odbc:goodssupply"; statement sm=null; string command=null; resultset rs=null; string tablename=null; string cname=null; string result=null; bufferedreader input=new bufferedreader(new inputstreamreader(system.in)); try { try { class.forname("sun.jdbc.odbc.jdbcodbcdriver"); //加载驱动 }catch(classnotfoundexception e){ system.out.println("can not load jdbc-odbc bridge driver"); system.err.print("classnotfoundexception:"); system.err.println(e.getmessage()); } connection con=drivermanager.getconnection(url,"user","password"); //使用sql-server2000认证 databasemetadata dmd=con.getmetadata(); //dmd为连接的相应情况 system.out.println("连接的数据库:"+dmd.geturl()); system.out.println("驱动程序:"+dmd.getdrivername()); sm=con.createstatement(); system.out.println("输入表名"); tablename=input.readline(); while(true) { system.out.println("输入列名(为空时程序结束):"); cname=input.readline(); if(cname.equalsignorecase("")) break; command="select "+cname+" from "+tablename; rs=sm.executequery(command); //执行查询 if(!rs.next()) system.out.println("表名或列名输入有误"); else { system.out.println("查询结果为:"); do { result=rs.getstring(cname); //数据库语言设置为中文,不用转换编码 //result=new string(result.getbytes("iso-8859-1"),"gb2312"); system.out.println(result); }while(rs.next()); } } }catch(sqlexception ex) { system.out.println("sqlexception:"); while(ex!=null) { system.out.println("message:"+ex.getmessage()); ex=ex.getnextexception(); } }catch(exception e) { system.out.println("ioexception"); } } }同意3楼5,java中如何实现数据库连接给你个 我写的例子import java.sql.*;import oracle.jdbc.driver.OracleDriver;public class DBUtilpublic static Connection getConnection() throws Exception//注册驱动DriverManager.registerDriver(new OracleDriver());//获得数据库连接String url = "jdbc:oracle:thin:@localhost:1521:xe";String user = "zidong";String password = "zidong";Connection conn = DriverManager.getConnection(url, user, password);return conn; } //测试 public static void main(String[] args) throws ExceptionDBUtil.getConnection(); }}用java连接数据库主要有两种方式,一是用jdbc-odbc桥来连接,二是用相关厂商提供的相应驱动程序来连接,首先谈谈第一种连接 。jdbc-odbc桥接器是用jdbcodbc.class和一个用于访问odbc驱动程序的本地库实现的 。对于windows平台,该本地库是一个动态连接库dll(jdbcodbc.dll) 。由于jdbc在设计上与odbc很接近 。在内部,这个驱动程序把jdbc的方法映射到odbc调用上,这样,jdbc就可以和任何可用的odbc驱动程序进行交互了 。这种桥接器的优点是,它使jdbc目前有能力访问几乎所有的数据库 。通行方式如图所示: 应用程序---jdbc api---jdbc-odbc---odbc api---odbc层---数据源 具体操作方法为: 首先打开控制面板的管理工具,打开数据源(odbc),在用户dsn里面添加数据源(即你要连接的数据库的名字),在这里假定连接sql server 2000的goodssupply数据库 。名称填写你要连接的数据库的名称(goodssupply) , 然后逐步设置,如果选用了使用sql-server密码认证的话,就要输入相应的用户名及密码连接到数据库 。一路下一步设置完成 。在java里面编写程序进行测试 , 在这里我的程序是让用户输入任意的表名与与列名,把该列的所有数据输出 。源代码如下: import java.io.bufferedreader; import java.io.inputstreamreader; import java.sql.*; public class odbcbridge { public static void main(string[] args) { string url="jdbc:odbc:goodssupply"; statement sm=null; string command=null; resultset rs=null; string tablename=null; string cname=null; string result=null; bufferedreader input=new bufferedreader(new inputstreamreader(system.in)); try { try { class.forname("sun.jdbc.odbc.jdbcodbcdriver"); //加载驱动 }catch(classnotfoundexception e){ system.out.println("can not load jdbc-odbc bridge driver"); system.err.print("classnotfoundexception:"); system.err.println(e.getmessage()); } connection con=drivermanager.getconnection(url,"user","password"); //使用sql-server2000认证 databasemetadata dmd=con.getmetadata(); //dmd为连接的相应情况 system.out.println("连接的数据库:"+dmd.geturl()); system.out.println("驱动程序:"+dmd.getdrivername()); sm=con.createstatement(); system.out.println("输入表名"); tablename=input.readline(); while(true) { system.out.println("输入列名(为空时程序结束):"); cname=input.readline(); if(cname.equalsignorecase("")) break; command="select "+cname+" from "+tablename; rs=sm.executequery(command); //执行查询 if(!rs.next()) system.out.println("表名或列名输入有误"); else { system.out.println("查询结果为:"); do { result=rs.getstring(cname); //数据库语言设置为中文,不用转换编码 //result=new string(result.getbytes("iso-8859-1"),"gb2312"); system.out.println(result); }while(rs.next()); } } }catch(sqlexception ex) { system.out.println("sqlexception:"); while(ex!=null) { system.out.println("message:"+ex.getmessage()); ex=ex.getnextexception(); } }catch(exception e) { system.out.println("ioexception"); } } }给你一段jdbc调用存储过程的例子(希望对你有帮助,当然你也可以执行sql语句): private static void testFn1()String driver = "oracle.jdbc.driver.OracleDriver";String strUrl = "jdbc:Oracle:thin:@192.168.20.226:1521:orcl";Statement stmt = null;ResultSet rs = null;Connection conn = null;CallableStatement proc = null;tryClass.forName(driver);conn = DriverManager.getConnection(strUrl, "junittest", "junittest");// 简单无返回值的存储过程调用// proc = conn.prepareCall("// proc.setString(1, "testid");// proc.setString(2, "从程序中插入的数据");// 单个返回值的存储过程调用proc = conn.prepareCall("proc.setString(1, "testi");proc.registerOutParameter(2, Types.VARCHAR);proc.execute();String testPrint = proc.getString(2);System.out.println(testPrint);// 多列返回值的存储过程调用// proc = conn.prepareCall("// proc.registerOutParameter(1, OracleTypes.CURSOR);// proc.execute();// rs = (ResultSet) proc.getObject(1);// while (rs.next())// System.out.println(rs.getString(1) + "," + rs.getString(2));// }// proc = conn.prepareCall("// proc.setString(1, "user_role");// proc.setString(2, "xzqdm");// proc.setString(3, null);// proc.execute();} catch (SQLException ex2)ex2.printStackTrace();} catch (Exception ex2)ex2.printStackTrace();} finallytryif (rs != null)rs.close();if (stmt != null)stmt.close();}if (conn != null)conn.close();}}} catch (SQLException ex1)}} }Class.formName(""); // 注册驱动类.这个字符串是什么,由要连接的数据库决定.Conncection conn = DriverManager.getConnection(url,user,pass); // 通过URL,数据库用户名,密码,取得连接下边以Oracle为例.Class.formName("oracle.jdbc.driver.OracleDriver"); String url = "jdbc:oracle:thin:@localhost:1521:SID";Conncection conn = DriverManager.getConnection(url,user,pass);

    推荐阅读