中易网

java连接好数据库后怎么使用

答案:2  悬赏:50  
解决时间 2021-01-31 01:32
java连接好数据库后怎么使用
最佳答案
java连接好数据库就是在使用数据库啊,java使用数据库就是指连接数据库。
全部回答
java数据库连接(jdbc)由一组用 java 编程语言编写的类和接口组成。jdbc 为工具/数据库开发人员提供了一个标准的 api,使他们能够用纯java api 来编写数据库应用程序。然而各个开发商的接口并不完全相同,所以开发环境的变化会带来一定的配置变化。本文主要集合了不同数据库的连接方式。 一、连接各种数据库方式速查表   下面罗列了各种数据库使用jdbc连接的方式,可以作为一个手册使用。   1、oracle8/8i/9i数据库(thin模式) class.forname("oracle.jdbc.driver.oracledriver").newinstance(); string url="jdbc:oracle:thin:@localhost:1521:orcl"; //orcl为数据库的sid string user="test"; string password="test"; connection conn= drivermanager.getconnection(url,user,password);   2、db2数据库 class.forname("com.ibm.db2.jdbc.app.db2driver ").newinstance(); string url="jdbc:db2://localhost:5000/sample"; //sample为你的数据库名 string user="admin"; string password=""; connection conn= drivermanager.getconnection(url,user,password);   3、sql server7.0/2000数据库 class.forname("com.microsoft.jdbc.sqlserver.sqlserverdriver").newinstance(); string url="jdbc:microsoft:sqlserver://localhost:1433;databasename=mydb"; //mydb为数据库 string user="sa"; string password=""; connection conn= drivermanager.getconnection(url,user,password);   4、sybase数据库 class.forname("com.sybase.jdbc.sybdriver").newinstance(); string url =" jdbc:sybase:tds:localhost:5007/mydb";//mydb为你的数据库名 properties sysprops = system.getproperties(); sysprops.put("user","userid"); sysprops.put("password","user_password"); connection conn= drivermanager.getconnection(url, sysprops);   5、informix数据库 class.forname("com.informix.jdbc.ifxdriver").newinstance(); string url = "jdbc:informix-sqli://123.45.67.89:1533/mydb:informixserver=myserver; user=testuser;password=testpassword"; //mydb为数据库名 connection conn= drivermanager.getconnection(url);   6、mysql数据库 class.forname("org.gjt.mm.mysql.driver").newinstance(); string url ="jdbc:mysql://localhost/mydb?user=soft&password=soft1234&useunicode=true&characterencoding=8859_1" //mydb为数据库名 connection conn= drivermanager.getconnection(url);   7、postgresql数据库 class.forname("org.postgresql.driver").newinstance(); string url ="jdbc:postgresql://localhost/mydb" //mydb为数据库名 string user="myuser"; string password="mypassword"; connection conn= drivermanager.getconnection(url,user,password);   8、access数据库直连用odbc的 class.forname("sun.jdbc.odbc.jdbcodbcdriver") ; string url="jdbc:odbc:driver={microsoft access driver (*.mdb)};dbq="+application.getrealpath("/data/reportdemo.mdb"); connection conn = drivermanager.getconnection(url,"",""); statement stmtnew=conn.createstatement() ; 二、jdbc连接mysql方式   下面是使用jdbc连接mysql的一个小的教程   1、查找驱动程序   mysql目前提供的java驱动程序为connection/j,可以从mysql官方网站下载,并找到mysql-connector-java-3.0.15-ga-bin.jar文件,此驱动程序为纯java驱动程序,不需做其他配置。   2、动态指定classpath   如果需要执行时动态指定classpath,就在执行时采用-cp方式。否则将上面的.jar文件加入到classpath环境变量中。   3、加载驱动程序 try{  class.forname(com.mysql.jdbc.driver);  system.out.println(success loading mysql driver!); }catch(exception e) {  system.out.println(error loading mysql driver!);  e.printstacktrace(); }   4、设置连接的url jdbc:mysql://localhost/databasename[?pa=va][&pa=va]   三、以下列出了在使用jdbc来连接oracle数据库时可以使用的一些技巧   1、在客户端软件开发中使用thin驱动程序   在开发java软件方面,oracle的数据库提供了四种类型的驱动程序,二种用于应用软件、applets、servlets等客户端软件,另外二种用于数据库中的java存储过程等服务器端软件。在客户机端软件的开发中,我们可以选择oci驱动程序或thin驱动程序。oci驱动程序利用java本地化接口(jni),通过oracle客户端软件与数据库进行通讯。thin驱动程序是纯java驱动程序,它直接与数据库进行通讯。为了获得最高的性能,oracle建议在客户端软件的开发中使用oci驱动程序,这似乎是正确的。但我建议使用thin驱动程序,因为通过多次测试发现,在通常情况下,thin驱动程序的性能都超过了oci驱动程序。   2、关闭自动提交功能,提高系统性能   在第一次建立与数据库的连接时,在缺省情况下,连接是在自动提交模式下的。为了获得更好的性能,可以通过调用带布尔值false参数的connection类的setautocommit()方法关闭自动提交功能,如下所示:   conn.setautocommit(false);   值得注意的是,一旦关闭了自动提交功能,我们就需要通过调用connection类的commit()和rollback()方法来人工的方式对事务进行管理。   3、在动态sql或有时间限制的命令中使用statement对象   在执行sql命令时,我们有二种选择:可以使用preparedstatement对象,也可以使用statement对象。无论多少次地使用同一个sql命令,preparedstatement都只对它解析和编译一次。当使用statement对象时,每次执行一个sql命令时,都会对它进行解析和编译。这可能会使你认为,使用preparedstatement对象比使用statement对象的速度更快。然而,我进行的测试表明,在客户端软件中,情况并非如此。因此,在有时间限制的sql操作中,除非成批地处理sql命令,我们应当考虑使用statement对象。   此外,使用statement对象也使得编写动态sql命令更加简单,因为我们可以将字符串连接在一起,建立一个有效的sql命令。因此,我认为,statement对象可以使动态sql命令的创建和执行变得更加简单。   4、利用helper函数对动态sql命令进行格式化   在创建使用statement对象执行的动态sql命令时,我们需要处理一些格式化方面的问题。例如,如果我们想创建一个将名字o'reilly插入表中的sql命令,则必须使用二个相连的“''”号替换o'reilly中的“'”号。完成这些工作的最好的方法是创建一个完成替换操作的helper方法,然后在连接字符串心服用公式表达一个sql命令时,使用创建的helper方法。与此类似的是,我们可以让helper方法接受一个date型的值,然后让它输出基于oracle的to_date()函数的字符串表达式。   5、利用preparedstatement对象提高数据库的总体效率   在使用preparedstatement对象执行sql命令时,命令被数据库进行解析和编译,然后被放到命令缓冲区。然后,每当执行同一个preparedstatement对象时,它就会被再解析一次,但不会被再次编译。在缓冲区中可以发现预编译的命令,并且可以重新使用。在有大量用户的企业级应用软件中,经常会重复执行相同的sql命令,使用preparedstatement对象带来的编译次数的减少能够提高数据库的总体性能。如果不是在客户端创建、预备、执行preparedstatement任务需要的时间长于statement任务,我会建议在除动态sql命令之外的所有情况下使用preparedstatement对象。   6、在成批处理重复的插入或更新操作中使用preparedstatement对象   如果成批地处理插入和更新操作,就能够显著地减少它们所需要的时间。oracle提供的statement和 callablestatement并不真正地支持批处理,只有preparedstatement对象才真正地支持批处理。我们可以使用addbatch()和executebatch()方法选择标准的jdbc批处理,或者通过利用preparedstatement对象的setexecutebatch()方法和标准的executeupdate()方法选择速度更快的oracle专有的方法。要使用oracle专有的批处理机制,可以以如下所示的方式调用setexecutebatch(): preparedstatement pstmt3d null; try {  ((oraclepreparedstatement)pstmt).setexecutebatch(30);  ...  pstmt.executeupdate(); }   调用setexecutebatch()时指定的值是一个上限,当达到该值时,就会自动地引发sql命令执行,标准的executeupdate()方法就会被作为批处理送到数据库中。我们可以通过调用preparedstatement类的sendbatch()方法随时传输批处理任务。   7、使用oracle locator方法插入、更新大对象(lob)   oracle的preparedstatement类不完全支持blob和clob等大对象的处理,尤其是thin驱动程序不支持利用preparedstatement对象的setobject()和setbinarystream()方法设置blob的值,也不支持利用setcharacterstream()方法设置clob的值。只有locator本身中的方法才能够从数据库中获取lob类型的值。可以使用preparedstatement对象插入或更新lob,但需要使用locator才能获取lob的值。由于存在这二个问题,因此,我建议使用locator的方法来插入、更新或获取lob的值。   8、使用sql92语法调用存储过程   在调用存储过程时,我们可以使用sql92或oracle pl/sql,由于使用oracle pl/sql并没有什么实际的好处,而且会给以后维护你的应用程序的开发人员带来麻烦,因此,我建议在调用存储过程时使用sql92。   9、使用object sql将对象模式转移到数据库中   既然可以将oracle的数据库作为一种面向对象的数据库来使用,就可以考虑将应用程序中的面向对象模式转到数据库中。目前的方法是创建java bean作为伪装的数据库对象,将它们的属性映射到关系表中,然后在这些bean中添加方法。尽管这样作在java中没有什么问题,但由于操作都是在数据库之外进行的,因此其他访问数据库的应用软件无法利用对象模式。如果利用oracle的面向对象的技术,可以通过创建一个新的数据库对象类型在数据库中模仿其数据和操作,然后使用jpublisher等工具生成自己的java bean类。如果使用这种方式,不但java应用程序可以使用应用软件的对象模式,其他需要共享你的应用中的数据和操作的应用软件也可以使用应用软件中的对象模式。   10、利用sql完成数据库内的操作 ----希望对你有用,具体这方面的网上很多,学习的时候多看看别人写的代码了,可以提升自己.....
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
我老公今年40岁,职工医保买了15年了,请问一定
求助!!! 中科院的苏州纳米研究所与北京的
望舒剑与其他剑不同在哪?
我女儿感冒发烧后眼睛老是一眨一眨的没精神是
我想开200平米的超市,请问投资大概多少?地
以前在一家公司上班,公司给交的五险,上个月
我读完初三没读了现在好迷茫啊!我该怎么办呢
想让男朋友陪我逛街,就去转一转,他说他没钱
从北京机场打车到大红门要多钱
查普伊萨现在哪里?
想给家人幸福,却心有余而力不足,不甘心像命
干物妹 小埋 漫画一共有几话 去年的动画片讲
为什么要创全国文明城市?
男生怎样才有胸沟
我的胸部一个大一个小为什么啊,怎么回事,怎
推荐资讯
急啊,高跟凉鞋买大一码的还是小一码的好?
通常单相异步电动机的效率总是低于三相异步电
谈谈对公理集合论和朴素集合论认识看法
百度钱包逾期黑名单都有谁啊
为什么诉讼中外国人要委托律师,只能委托中国
外国又有哪些物品传输到中国????????
如何获得神武子女饰物?
正骨医院看病电脑的档案会自动删掉吗?
DNF改名时怎么打符号 我按了V+1符号有了 但
哪些食物中富含酵素
说又不听 听又不懂 懂又不做 做又做错 错又不
2011年4月5日美元兑换人民币汇率
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?