JAVA连接数据库

问一下。JAVA程序连接、访问、查询Access数据库或MySQL数据库的代码一样不?
如果不一样的话,哪里有不一样,请告知小弟,谢谢。(最好有代码)

java是被称为跨平台的语言,java里处理数据库可以用JDBC来实现:
JDBC分为编程接口和驱动程序两类,编程接口是sun公司提供的,驱动程序则由数据库公司编写。我们编程的时候使用接口调用驱动,所以不用关心每种数据库的具体差异。

除了连接数据库时代码不一样外,编程接口都是统一的,所以增删改查操作都是一样的。
连接数据库必须要装有相关数据库的驱动程序才行。
连接数据库前,必须要做两件事:
1.创建一个驱动对象
2.用驱动管理器注册驱动对象
在java里可以有三种方式做到以上两件事:(以oracle为例)
1.用类反射机制:Class.forName(<数据库类名>);
Class.forName("oracle.jdbc.driver.OracleDriver");//这段代码
表面作用是获取oracle的类对象,实际上,在这段代码里已经创建了一个oracle的驱动对象,并且在驱动管理器里注册了。(各位可以想想这个对象是在哪个时候创建的?答案我最后揭晓,很有意思的哈)
2.自己创建驱动对象,并且注册。
Driver oracle=new oracle.jdbc.driver.OracleDriver();//创建驱动对象。
DriverManager.register(oracle);//注册驱动程序;
3.利用java虚拟机加载(这个我也不会哈,就不讲了)

下面给一个具体连接数据库的代码:

Class.forName("oracle.jdbc.driver.OracleDriver");
String url="oracle:jdbc:thin:@<数据库IP>:<端口号(默认1521)>:<数据库名>";
String userName="xxx";
String passwd="xxxxxx";
Connection con=DriverManager.getConnection(url,userNme,passwd);//连接数据库了。

Statement s=con.getStatement();//创建数据库操作对象
String sql="select * from .....";
s.executeUpdate(sql);//将sql语句送到数据库,编译执行sql语句。
//数据库资源不会自动释放,所以用完了必须关掉。关闭顺序
ResultSet,Statement,Connection(这里没有用ResultSet所以没有关闭)。
s.closed();
con.closed();

每种数据库都是这么连接和执行的。不同的是数据库类名和url,这些楼主自己去网上搜下很容易找到,楼上诸位都讲了好些。
说下4楼的冗余代码,并且也公布上面问题的答案:
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
newInstance();这句代码是多余的。
因为在类加载的时候,在静态初始化代码块里,已经创建了一个驱动对象,并且已经注册了。

回答的不错,自我夸下,楼主给我分哈。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-01-19
只有连接不一样吧,其实的SQL语句都是一样的。
连接的区别如下:
1.连接MySQL数据库
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
//或者Class.forName("com.mysql.jdbc.Driver");
String url ="jdbc:mysql://localhost/myDB?
user=soft&password=soft1234&useUnicode=true&characterEncoding=8859_1"
//myDB为数据库名
Connection conn= DriverManager.getConnection(url);
2.连接Access数据库
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() ;
第2个回答  2010-01-19
一 。连接数据库
连接的区别如下:
1.连接MySQL数据库
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
//或者Class.forName("com.mysql.jdbc.Driver");
String url ="jdbc:mysql://localhost/myDB?
user=soft&password=soft1234&useUnicode=true&characterEncoding=8859_1"
//myDB为数据库名
Connection conn= DriverManager.getConnection(url);
2.连接Access数据库
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() ;
其实对于每种数据库,如DB2,oracle,informix,sybase等,他的驱动都是不一样的。这些数据库的驱动楼主自己网上找找吧。
二。查询数据库的sql语句在每种数据库中也是有语法区别的。每种数据库都提供了那些基本的sql功能,如select,insert,update等。但是在具体用的时候还是有区别的,例如我们现在在用informix,然后里面select中就有skip功能,而这个在其他数据库中是没有的。这种区别在用sql的时候会感觉到,因为不兼容的语法肯定会报语法错误。
第3个回答  2010-01-19
access:String url="jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=C:\filename.mdb";
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

mysql: Class.forName("com.mysql.jdbc.Driver");
("jdbc:mysql://localhost:3306/xx", "root", "root");
第4个回答  2010-01-19
连接代码中 数据库的驱动肯定是不一样的,访问的话,基本上是一样的,如"select * from xxtable" JDBC都是一样的
相似回答
大家正在搜