Posted on 2008-02-14 21:35
semovy 阅读(1122)
评论(0) 编辑 收藏 所属分类:
JDBC
package com.semovy.service.impl;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.List;
import com.semovy.bean.Database;
public class SQLServerDatabase implements Database {
private String driver = null;
private String pwd = null;
private String user = null;
private String url = null;
private Connection connection = null;
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public String getDriver() {
return driver;
}
public String getPwd() {
return pwd;
}
public void setDriver(String driver)
{
this.driver = driver;
}
public void setPwd(String pwd)
{
this.pwd = pwd;
}
public Connection getConnection()
{
openConnection();
return this.connection;
}
public void setConnection(Connection connection) {
this.connection = connection;
}
public List getData() {
return null;
}
public SQLServerDatabase(String driver,String url,String user,String pwd)
{
this.driver = driver;
this.url = url;
this.user = user;
this.pwd = pwd;
try
{
System.out.println("start");
Class.forName(this.getDriver()).newInstance();
this.connection = DriverManager.getConnection(this.getUrl(), this.getUser(), this.getPwd());
System.out.println("OK");
}catch(SQLException e)
{
System.out.println(e.getLocalizedMessage());
}
catch(ClassNotFoundException e)
{
System.out.println(e.getLocalizedMessage());
}
catch(Exception e)
{
System.out.println(e.getLocalizedMessage());
}
}
/**
*
* @return
*/
private Connection openConnection()
{
if(this.connection != null)
{
return this.connection;
}
else
{
try
{
Class.forName(this.getDriver()).newInstance();
this.connection = DriverManager.getConnection(this.getUrl(), this.getUser(), this.getPwd());
}catch(SQLException e)
{
System.out.println(e.getLocalizedMessage());
}
catch(ClassNotFoundException e)
{
System.out.println(e.getLocalizedMessage());
}
catch(Exception e)
{
System.out.println(e.getLocalizedMessage());
}
return this.connection;
}
}
public void closeConnection()
{
try
{
if(this.getConnection() != null && !this.connection.isClosed())
{
this.connection.close();
}
}catch(SQLException e)
{
System.out.println(e.getLocalizedMessage());
}
}
public ResultSet executeQuery(String sqlExp)
{
ResultSet rs = null;
Statement stmt = null;
try
{
stmt = this.getConnection().createStatement();
rs = stmt.executeQuery(sqlExp);
}catch(SQLException e)
{
System.out.println(e.getLocalizedMessage());
}
return rs;
}
public void executeUpdate(String sqlExp)
{
try
{
this.getConnection().createStatement().executeUpdate(sqlExp);
}catch(SQLException e)
{
System.out.println(e.getLocalizedMessage());
}
}
public void executeBatchUpdate()
{
try
{
long start = System.currentTimeMillis();
Statement stmt = this.getConnection().createStatement();
for(int i=0;i < 10000;i++)
{
stmt.addBatch("insert into item values(2,'item" + i + "')");
if(i%500 == 0 && i>0)
stmt.executeBatch();
}
stmt.executeBatch();
this.getConnection().commit();
stmt.close();
stmt = null;
long spendTime = System.currentTimeMillis() - start;
System.out.println("向数据库插入一万条记录用去:" + spendTime*1.0/1000 + " s");
}catch(SQLException e)
{
System.out.println(e.getLocalizedMessage());
}
}
public void display(ResultSet rs)
{
try
{
ResultSetMetaData rsmd = rs.getMetaData();
int colLen = rsmd.getColumnCount();
while(rs.next())
{
for(int i=0; i<colLen;i++)
{
System.out.print(rsmd.getColumnName(i+1) + ": " + rs.getObject(i+1) + " ");
}
System.out.println();
}
}catch(SQLException e)
{
System.out.println(e.getLocalizedMessage());
}
}
}
package com.semovy.test;
import com.semovy.service.impl.SQLServerDatabase;
public class TestHelloWorld {
public static void main(String[] args) {
// ApplicationContext appContext = new
// FileSystemXmlApplicationContext("classpath:config.xml");
// Hello hello = (Hello)appContext.getBean("hello");
// hello.saySaluation();
// IoC Inversion of Control 反向控制.
// 发明者新命名为:DI dipendency Injection 依赖注入.
// 反向控制是实现依赖抽象,不是抽象依赖实现.
SQLServerDatabase sqlServerDB = new SQLServerDatabase(
"com.microsoft.jdbc.sqlserver.SQLServerDriver", "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=test",
"sa", "1234");
sqlServerDB.executeUpdate("drop table item if exist create table item(id int not null identity(1,1) primary key,int categoryId not null,itemName varchar(255) default '')");
sqlServerDB.executeUpdate("delete from item");
sqlServerDB.executeBatchUpdate();
sqlServerDB.display(sqlServerDB.executeQuery("select top 100 * from item"));
sqlServerDB.closeConnection();
}
}