刚学java,想要连接MySQL和Linux的jdbc连接实例。我是新手,大家莫笑啊。
解决方案 »
- jbuilder中breakpoint的用途
- java连接oracle报错:java.sql.SQLException: ORA-04031: unable to allocate 4200 bytes of shared memory ("shared pool","unknown obje
- 急!!!哪位前辈有时间帮忙看一下
- 提供几本好书下载,希望大家喜欢
- java 好在哪里?
- tomcat 出现找不到文件 -Djava.endorse.dirs= 求救
- 使用Calendar类返回的系统日期为什么只有月份不对
- 大家来讨论吧,关于ASP中如何调用JAVA的问题.●UP有分●
- 谁能帮我解释一下下面的程序。。。。。。。。
- String s="";
- 在面版上移除容器后再加载其他容器怎么实现。。。
- 很基础的东东,在下不懂
JDBC分为2层,一层是接口,一层是驱动(具体的实现)接口集他就是一个协议(合同).SUN公司是甲方,他定义了乙方(具体的数据库厂商)需要做的一些事情.
调用者(java的程序员)和实现者(数据库驱动的程序员)之间的协议.1 链接数据库 2 向数据库发送sql命令 3 处理结果从结构上来说JDBC是一个接口集Driver 按照JDBC规范实现的一个组件(类库);
四种驱动类型.
1.JDBC-ODBC-Bridge Driver(ODBC是MS开发的通用的访问数据库的接口,ODBC是基于C语言的,可以把JDBC看做是ODBC的java版,)这个驱动是唯一SUN公司自己写的一个驱动.特点:效率不高,而且安全性不够.
2.partly-Java-Native-Driver 部分java本地驱动:本身java是安全的,但是有一部分是不安全的,所以整体的安全性能就依赖于本地代码那一部分,所以java的安全性就完全没有了.
3.Pure-Java-Net-Driver:虽然是纯java写的,安全方面的问题没有了,但是效率是很低的,
4.Pure-Java-Native-Protocol-Driver.:纯java本地协议驱动java.sql包和javax.sqlDriver 是一个接口,他代表驱动程序.数据库厂商必须实现这个接口.
DriverManager 是一个辅助管理驱动程序的类,
Connection 代表数据库连接,Statement
PreparedStatement
CallableStatement 这三个是数据库操作对象.ResultSet 代表结果集DatabaseMetadata
ResultSetMetada 这2个代表元数据Types 代表Jdbc类型,这个类里边只有静态常量环境和开发.
环境 1.数据库服务器2.驱动包3.环境变量4.数据库连接信息oracle:thin:@192.192.168.0.23:1521:tarenajdbc:mysql://127.0.0.1:3306/testhttp://202.156.8.100:80/index.html
=================================================
public static void main(String[] args){
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
StringBuffer sb = new StringBuffer();
try
{
//1. 加载驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
//2. 连接数据库
con = DriverManager.getConnection(
"jdbc:oracle:thin:@192.168.0.23:1521:tarena","hzsd0702",
"hzsd0702");
//3. 获取数据库操作对象
stmt = con.createStatement();
//4. 操作数据库
rs = stmt.executeQuery(
"select id,name from t_user order by id");
//5. 处理结果集
while(rs.next()){
sb.append("id="+rs.getString(1)+" name="+rs.getString(2)+"\n");
}
System.out.println(sb.toString());
}
catch ( Exception e)
{
e.printStackTrace();
}finally{
//6.关闭连接
try{
if(rs!= null) rs.close();
if(stmt!= null) stmt.close();
if(con!= null) con.close();
}catch (SQLException ex){
ex.printStackTrace();
}
}
=======================================
Class.forName();把这个类加载到内存,并且调用了DriverManager的一个静态方法static void registerDriver(Driver driver),注册到DriverManager里边,DriverManager里边相当有个列表记录着注册的Driver,当你掉DriverManager的static Connection getConnection(String url, Properties info) 这个方法获得Connection的时候,DriverManager会遍历自己的那个列表,去那里找合适的Driver,然后调用Driver里边的一个Connection connect(String url, Properties info) 这个方法,获得这个Connection方法.
========================================
DriverManager 的getConnection这个方法是一个代理方法.他会用到向他注册过的驱动,调用这些驱动对象来连接数据库,Driver会解析传过来的这个URL,通过他自己的connect方法.获得Connection对象.ResultSet
游标是单向的,而且是只读的.
rs.next(); 使游标向下移动一个位置,并且返回当前的那个游标所指的记录.rs.getString()
rs.getDouble()
通过相应类型的方法来取出来这里边的值,参数可以跟一个整数,代表第你要取第几个字段,或者里边跟上字段名,但是如果参数里边传的是字段名的话,这样会使效率降低.