|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
C#是盗用了Java的源代码,仿照开发的,原因是Java是开源的啊,盗了也白盗,还有一点,开发C#语言的团队是就是开发Java语言的团队,是微软重金挖过去的啊oracle<Pstyle="TEXT-INDENT:2em">Java数据库毗连(JDBC)API是一系列可以让Java编程职员会见数据库的接口,各个开辟商的接口其实不完整不异。在利用多年的Oracle公司的JDBC后,我堆集了很多技能,这些技能可以使我们更好地发扬体系的功能和完成更多的功效。<Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em">1、在客户端软件开辟中利用Thin驱动程序<Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em">在开辟Java软件方面,Oracle的数据库供应了四品种型的驱动程序,二种用于使用软件、applets、servlets等客户端软件,别的二种用于数据库中的Java存储历程等服务器端软件。在客户机端软件的开辟中,我们能够选择OCI驱动程序或Thin驱动程序。OCI驱动程序使用Java当地化接口(JNI),经由过程Oracle客户端软件与数据库举行通信。Thin驱动程序是纯Java驱动程序,它间接与数据库举行通信。为了取得最高的功能,Oracle倡议在客户端软件的开辟中利用OCI驱动程序,这仿佛是准确的。但我倡议利用Thin驱动程序,由于经由过程屡次测试发明,在一般情形下,Thin驱动程序的功能都凌驾了OCI驱动程序。<Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em">2、封闭主动提交功效,进步体系功能<Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em">在第一次创建与数据库的毗连时,在缺省情形下,毗连是在主动提交形式下的。为了取得更好的功能,能够经由过程挪用带布尔值false参数的Connection类的setAutoCommit()办法封闭主动提交功效,以下所示:<Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em">conn.setAutoCommit(false);<Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em">值得注重的是,一旦封闭了主动提交功效,我们就必要经由过程挪用Connection类的commit()和rollback()办法来野生的体例对事件举行办理。<Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em">3、在静态SQL或偶然间限定的命令中利用Statement对象<Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em">在实行SQL命令时,我们有二种选择:可使用PreparedStatement对象,也能够利用Statement对象。不管几次地利用统一个SQL命令,PreparedStatement都只对它剖析和编译一次。当利用Statement对象时,每次实行一个SQL命令时,城市对它举行剖析和编译。这大概会使你以为,利用PreparedStatement对象比利用Statement对象的速率更快。但是,我举行的测试标明,在客户端软件中,情形并不是云云。因而,在偶然间限定的SQL操纵中,除非成批地处置SQL命令,我们应该思索利用Statement对象。<Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em">别的,利用Statement对象也使得编写静态SQL命令加倍复杂,由于我们能够将字符串联接在一同,创建一个无效的SQL命令。因而,我以为,Statement对象可使静态SQL命令的创立和实行变得加倍复杂。<Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em">4、使用helper函数对静态SQL命令举行格局化<Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em">在创立利用Statement对象实行的静态SQL命令时,我们必要处置一些格局化方面的成绩。比方,假如我们想创立一个将名字OReilly拔出表中的SQL命令,则必需利用二个相连的“”号交换OReilly中的“”号。完成这些事情的最好的办法是创立一个完成交换操纵的helper办法,然后在毗连字符串心折用公式表达一个SQL命令时,利用创立的helper办法。与此相似的是,我们可让helper办法承受一个Date型的值,然后让它输入基于Oracle的to_date()函数的字符串表达式。<Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em">5、使用PreparedStatement对象进步数据库的整体效力<Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em">在利用PreparedStatement对象实行SQL命令时,命令被数据库举行剖析和编译,然后被放到命令缓冲区。然后,每当实行统一个PreparedStatement对象时,它就会被再剖析一次,但不会被再次编译。在缓冲区中能够发明预编译的命令,而且能够从头利用。在有大批用户的企业级使用软件中,常常会反复实行不异的SQL命令,利用PreparedStatement对象带来的编译次数的削减可以进步数据库的整体功能。假如不是在客户端创立、准备、实行PreparedStatement义务必要的工夫善于Statement义务,我会倡议在除静态SQL命令以外的一切情形下利用PreparedStatement对象。<Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em">6、在成批处置反复的拔出或更新操纵中利用PreparedStatement对象<Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em">假如成批地处置拔出和更新操纵,就可以够明显地削减它们所必要的工夫。Oracle供应的Statement和CallableStatement其实不真正地撑持批处置,只要PreparedStatement对象才真正地撑持批处置。我们可使用addBatch()和executeBatch()办法选择尺度的JDBC批处置,大概经由过程使用PreparedStatement对象的setExecuteBatch()办法和尺度的executeUpdate()办法选择速率更快的Oracle专有的办法。要利用Oracle专有的批处置机制,能够以以下所示的体例挪用setExecuteBatch():<Pstyle="TEXT-INDENT:2em">PreparedStatementpstmt3Dnull;<Pstyle="TEXT-INDENT:2em">try{<Pstyle="TEXT-INDENT:2em">((OraclePreparedStatement)<Pstyle="TEXT-INDENT:2em">pstmt).setExecuteBatch(30);<Pstyle="TEXT-INDENT:2em">...<Pstyle="TEXT-INDENT:2em">pstmt.executeUpdate();<Pstyle="TEXT-INDENT:2em">}<Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em">挪用setExecuteBatch()时指定的值是一个下限,当到达该值时,就会主动地激发SQL命令实行,尺度的executeUpdate()办法就会被作为批处置送到数据库中。我们能够经由过程挪用PreparedStatement类的sendBatch()办法随时传输批处置义务。<Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em">7、利用Oraclelocator办法拔出、更新年夜对象(LOB)<Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em"> Oracle的PreparedStatement类不完整撑持BLOB和CLOB等年夜对象的处置,特别是Thin驱动程序不撑持使用PreparedStatement对象的setObject()和setBinaryStream()办法设置BLOB的值,也不撑持使用setCharacterStream()办法设置CLOB的值。只要locator自己中的办法才干够从数据库中猎取LOB范例的值。可使用PreparedStatement对象拔出或更新LOB,但必要利用locator才干猎取LOB的值。因为存在这二个成绩,因而,我倡议利用locator的办法来拔出、更新或猎取LOB的值。<Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em">8、利用SQL92语法挪用存储历程<Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em">在挪用存储历程时,我们可使用SQL92或OraclePL/SQL,因为利用OraclePL/SQL并没有甚么实践的优点,并且会赐与后保护你的使用程序的开辟职员带来贫苦,因而,我倡议在挪用存储历程时利用SQL92。<Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em">9、利用ObjectSQL将对象形式转移到数据库中<Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em">既然能够将Oracle的数据库作为一种面向对象的数据库来利用,就能够思索将使用程序中的面向对象形式转到数据库中。今朝的办法是创立Javabean作为假装的数据库对象,将它们的属性映照到干系表中,然后在这些bean中增加办法。只管如许作在Java中没有甚么成绩,但因为操纵都是在数据库以外举行的,因而其他会见数据库的使用软件没法使用对象形式。假如使用Oracle的面向对象的手艺,能够经由过程创立一个新的数据库对象范例在数据库中仿照其数据和操纵,然后利用JPublisher等工具天生本人的Javabean类。假如利用这类体例,不仅Java使用程序可使用使用软件的对象形式,其他必要共享你的使用中的数据和操纵的使用软件也能够利用使用软件中的对象形式。<Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em">10、使用SQL完成数据库内的操纵<Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em">我要向人人先容的最主要的履历是充实使用SQL的面向汇合的办法来办理数据库处置需求,而不是利用Java等历程化的编程言语。<Pstyle="TEXT-INDENT:2em">假如编程职员要在一个表中查找很多行,了局中的每一个行城市查找其他表中的数据,最初,编程职员创立了自力的UPDATE命令来成批地更新第一个表中的数据。与此相似的义务能够经由过程在set子句中利用多列子查询而在一个UPDATE命令中完成。当可以在单一的SQL命令中完成义务,何须要让数据在网下流来流往的?我倡议用户仔细进修怎样最年夜限制地发扬SQL的功效。
市场分额,java比asp高一点,因为C#是仿照java开发的,所以哦C#能做的java都能做到,但是java能做的,C#不一定都能做到。毕竟是抄袭吗。 |
|