`

java jdbc连接数据库

 
阅读更多

 

使用java操作数据库时需要用到jdbc。

1、加载驱动   class forName("oracle.jdbc.driver.OracleDriver");

2、定义连接字符创

String url = "jdbc:oracle:thin:@192.168.50.128:1521:ORCL";

3、连接到数据库

                        Connection conn = DriverManager.getConnection(url, user,psw);

4、取得数据库sql语句的编译和执行对象

Statement stm = conn.createStatement();

5、定义要执行的sql语句

String readAll = "select empno,ename,sal,comm from emp";

6、执行sql语句

查询,可以获得结果集

ResultSet rs = stm.executeQuery(readAll);

更新

String sql2 = "update emp set comm = 700 where ename = 'SMITH'";

stm.executeUpdate(sql2);

注意事项:

如果不知道表结构,可以先进行查询(select * from emp);

for (int i = 0; i < rsd.getColumnCount(); i++) {
				System.out.println(rsd.getColumnName(i + 1));
				System.out.println(rsd.getColumnType(i + 1));
			}

 

查询完之后可以遍历打印查看结果:

while (rs.next()) {
				// 每次取得一行,用第一列进行标记
				// System.out.println(rs.getInt("empno"));
				// System.out.println(rs.getInt(1));
				int empno = rs.getInt(1);
				String ename = rs.getString(2);
				float sal = rs.getFloat(3);
				float comm = rs.getFloat(4);
				System.out.println(empno + "\t" + ename + "\t" + sal + "\t"
						+ comm);
			}

 

java中的每一句操作都会自动提交,如果希望暂时不保存,可以使用

conn.setAutoCommit(false);

需要的时候再手动提交。

conn.commit();

 

sqlconnection.xml

<?xml version="1.0" encoding="utf-8"?>
<sqlconnection>
<sql id="oracle">
	<url><![CDATA[jdbc:oracle:thin:@127.0.0.1:1521:ORCL]]></url>
    	<driver><![CDATA[oracle.jdbc.driver.OracleDriver]]></driver>
    	<user>test</user>
   	 <pwd>huangbin</pwd>
 </sql>
</sqlconnection>

 

 

SqlConnection.java

package com.hb.jdbc;

/**
 * 配置的对象
 * 
 * @author HuangBin
 * @2014年10月8日
 */
public class SqlConnection {

	String id;
	String url;
	String driver;
	String user;
	String psw;

	public String toString() {
		return user + " " + psw;
	}
}

 

 

Test.java

package com.hb.jdbc;

import java.io.File;
import java.io.FileInputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;

import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

/**
 * 从xml文件中读到数据库的配置,并连接数据库更新部分数据
 * 
 * @author HuangBin
 * @2014年10月8日
 */
public class Test {

	SqlConnection sc;

	public static void main(String[] args) {
		Test test = new Test();
		test.parse();
		test.connect();
	}

	public void connect() {
		try {
			Class.forName(sc.driver);
			// 配置通过xml得到
			Connection conn = DriverManager.getConnection(sc.url, sc.user,
					sc.psw);
			// 取得数据库sql语句的编译和执行对象
			Statement stm = conn.createStatement();
			// 定义要执行的sql语句
			String sql = "select * from stu";
			// 表名通过它得到
			ResultSet rs = stm.executeQuery(sql);
			// 再遍历rs
			while (rs.next()) {
				// 每次取得一行,用第一列进行标记
				int stuno = rs.getInt(1);
				String stuname = rs.getString(2);
				int stuage = rs.getInt(3);
				System.out.println(stuno + "\t" + stuname + "\t" + stuage);
			}
			conn.setAutoCommit(false);
			// 在这里面执行sql语句
			// 例如,需要从smith工资转100给allen,需要等两次更新都完成才提交事物,否则,可能执行完第一句,第二句来不及执行,
			// 那么需要设置禁止自动提交,(那么就会自动回滚,不会更新数据库中的数据)。
			conn.setAutoCommit(false);
			String sql2 = "update stu set stuname = 'lisi' where stuname = 'zhangsan'";
			stm.executeUpdate(sql2);

			// 在这里模拟程序出错,如果出错,则上面那条不能生效
			// int test = Integer.parseInt("aaaa");

			String sql3 = "update stu set stuage = 20 where stuname = 'zhangsan'";
			stm.executeUpdate(sql3);

			// 手动提交
			conn.commit();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public void parse() {
		try {
			// 创建一个解析器工厂对象
			SAXParserFactory factory = SAXParserFactory.newInstance();
			// 创建sax解析器
			SAXParser sax = factory.newSAXParser();

			MyHander hander = new MyHander();
			sax.parse(new FileInputStream(new File("sqlconnection.xml")),
					hander);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	class MyHander extends DefaultHandler {

		String strValue;

		public void startDocument() throws SAXException {
		}

		public void endDocument() throws SAXException {
			System.out.println(sc);
		}

		public void startElement(String uri, String localName, String qName,
				Attributes atts) throws SAXException {
			// System.out.println("解析到一个元素:" + qName);
			if (qName.equals("sql")) {
				sc = new SqlConnection();
				sc.id = atts.getValue("id");
			}

		}

		public void endElement(String uri, String localName, String qName)
				throws SAXException {
			// System.out.println("元素结尾:" + qName);
			if (qName.equals("url")) {
				sc.url = strValue;
			} else if (qName.equals("driver")) {
				sc.driver = strValue;
			} else if (qName.equals("user")) {
				sc.user = strValue;
			} else if (qName.equals("pwd")) {
				sc.psw = strValue;
			}
		}

		public void characters(char[] ch, int start, int length)
				throws SAXException {

			strValue = new String(ch, start, length);
			// System.out.println(new String(ch, start, length));
		}

	}
}

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics