黑马程序员_java数据库

------- android培训 java培训 、期待与您交流! ----------

在java函数库中,有一组专门处理数据库连接的API:JDBC
JDBC即java DataBase Connection 数据库连接。
 JDBC能够让我们完成许多事情
1.完成数据库的连接创建
2.传送SQL命令给数据库,完成数据库操作及数据表
3.接受和处理数据库执行的结果
Jdbc在使用中常见的有三类:
JDBC—ODBC桥连接 JDBC连接 JDBC网络连接
连接数据库步骤

JAVA与SQLServer数据库连接总结

 

1 jdbc-odbc桥方式 2
1.1 建立ODBC数据源: 2
1.2 导入包: 2
1.3 装载驱动: 2
1.4 建立连接: 2
1.5 建立载体: 3
1.6 发出数据请求: 3
1.7 处理结果集: 3
1.8 获得元数据信息(表的列定义信息): 3
1.9 关闭数据库各对象: 4
2 JDBC直接连接SQLServer数据库 5
2.1 配置jdk加入微软的jar包 5
2.2 装载驱动: 5
2.3 建立连接: 5
2.4 其他步骤说明: 5

 

1 jdbc-odbc桥方式
1.1 建立ODBC数据源:
设置——〉控制面板——〉管理工具——〉数据源(ODBC)—

—〉系统DSN——〉添加——〉选择SQLServer驱动——>填写数

据源名字——〉选择服务器(本地服务器可以写.)——〉选择

登陆方式(默认使用windows NT验证)——〉更改默认数据库

为所有数据库——〉完成测试成功则建立完毕。
1.2 导入包:
import java.sql.*;
1.3 装载驱动:
DriverManager.registerDriver(new

sun.jdbc.odbc.JdbcOdbcDriver());

或者:

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

第一种方式比较常用,也容易理解;
1.4 建立连接:
Connection con = DriverManager.getConnection

("jdbc:odbc:xx");

其中xx是1.1建立的数据源名字,如果建立的数据源选择的

windowsNT验证方式,则上面语句即可;
如果1.1所建立的数据源登陆方式选择的是SQL用户验证,则这

里要写成:
Connection con = DriverManager.getConnection

("jdbc:odbc:xx","用户名","密码");
其中的"用户名","密码"分别是SQLServer所建立的“登陆”用

户,并具有对所用库的操作权限;
1.5 建立载体:
Statement st = con.createStatement();

1.6 发出数据请求:
查询数据操作:
ResultSet rs = st.executeQuery("select * from titles");

该语句将sql语句传递给数据库并返回一个结果集rs,即查询结

果放在rs对象中;

更新数据操作:
int count=st.executeUpdate("update USERS set

username='aaa' where id=3");

所有对数据库进行的具有更新性质的操作(包含

update,insert,delete等)都要调用这个方法,返回结果是一

个整数,即该操作所影响的行数;

1.7 处理结果集:
rs.next()
将结果集rs中的行指针向后移动一行,注意行指针最初在第一

行之前,并没有指向第一行。该方法返回一个布尔值,如果是

true则表示可以移动到下一行,否则表示已经移动到记录集末

尾;

rs.getString()
如果移动到某行,可以通过该方法获取该行的某列数据,其调

用方式是:
 rs.getString("列名")
或者
 rs.getString(列序号)
 注意:列序号是从1开始
1.8 获得元数据信息(表的列定义信息):
ResultSetMetaData meta = rs.getMetaData();

rs.getMetaData()返回结果集rs的元信息(结果集的列定义信

息)
meta.getColumnCount()
返回元数据中的列的数量;
meta.getColumnName(列序号)
返回元数据中的某列的列名;

其常用方式是:
ResultSetMetaData meta = r.getMetaData();
   for (int i = 1; i <=

meta.getColumnCount(); i++)
   {
       System.out.print

(meta.getColumnName(i)+"      ");//字段名称
      }
      System.out.println();

1.9 关闭数据库各对象:
按照建立顺序逆序关闭各对象:
 rs.close();//关闭结果集
 st.close();//关闭载体
 conn.close();//关闭连接
 
2 JDBC直接连接SQLServer数据库
注意:
 该方法不需要建立ODBC数据源;
 需要配置SQLServer数据库属性中的安全项目中为SQL

和windowsNT系统验证模式。
2.1 配置jdk加入微软SQLSever的jar包


2.2 装载驱动:
DriverManager.registerDriver(new

com.microsoft.jdbc.sqlserver.SQLServerDriver());

2.3 建立连接:
Connection con = DriverManager.getConnection

("jdbc:microsoft:sqlserver://localhost:1433;DatabaseNam

e=库名","用户名","密码");

其中:
 //localhost是数据库的主机地址,本地机即是

localhost;
 1433为数据库端口号,默认是1433,如果数据库配置

不是该端口需要对应修改;
 库名为所要操作的数据库名字,注意不是表名;
 用户名、密码为SQLServer系统设置“登录”,并具有

对库名所指数据库的操作权限,默认可以用sa;

2.4 其他步骤说明:
以上完成后,其他步骤和使用方法完全同第1种方式一致。

一般以JDBC直接连接的常用代码段如下:

 

String dbUrl =

"jdbc:microsoft:sqlserver://localhost:1433;DatabaseName

=mini";
 String user="sa"; //用户名
   String password="";//密码
 try
 {
  // 装载驱动程序
  DriverManager. registerDriver (new

com.microsoft.jdbc.sqlserver.SQLServerDriver());
  //建立连接
  Connection conn =

DriverManager.getConnection(dbUrl,user,password);
  Statement st = conn.createStatement();
  // 执行,获得数据集
  ResultSet rs =st.executeQuery("SELECT *

FROM users");
  
  //获得元数据
  ResultSetMetaData meta =

rs.getMetaData();
  for (int i = 1; i <=

meta.getColumnCount(); i++)
  {
      System.out.print

(meta.getColumnName(i)+"      ");//字段名称
     }
     System.out.println();
     
  //循环打印结果中的信息
  while(r.next())
  {
   System.out.println

(rs.getString(1)+"  "+rs.getString(2) +"  "+

rs.getString(3) );
  }
  //关闭
   rs.close();
   st.close();
conn.close();
 }
  catch(Exception e)
  {
   e.printStackTrace();
  }
关于SQL语句可以参考SQL语句
关于java的数据库的操作范例:
1.提取单条记录
/*
import java.sql.*;
private Connection conn=null;
private Statement stmt=null;
private ResultSet rs=null;
*/
try {
 Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
 String url="jdbc:odbc:%%1";
 conn=DriverManager.getConnection(url,%%2,%%3);
 stmt=conn.createStatement();
 rs=stmt.executeQuery(%%4);
 rs.next();
 int %%5=rs.getInt(%%6);
//String %%5=rs.getString(%%6);
}catch(Exception e){
 e.printStackTrace();
}
finally{
 try {
  if(rs!=null)
   rs.close();
  if(stmt!=null)
   stmt.close();
  if(conn!=null)
   conn.close();
 } catch (SQLException e) {
  e.printStackTrace();
 }
}

2.单值比较
/*
import java.sql.*;
private Connection conn=null;
private Statement stmt=null;
private ResultSet rs=null;
*/
try {
 Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String url="jdbc:odbc:%%1";
 conn=DriverManager.getConnection(url,%%2,%%3);
 stmt=conn.createStatement

(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDAT

ABLE);
 rs=stmt.executeQuery(%%2);
 rs.next();
 int %%6=rs.getInt(%%7);
 if(%%6==%%4)
 {
  %%5
 }
}
catch (Exception e) {
 e.printStackTrace();
}
finally{
 try {
  if(rs!=null)
   rs.close();
  if(stmt!=null)
   stmt.close();
  if(conn!=null)
   conn.close();
 } catch (SQLException e) {
  e.printStackTrace();
 }
}

3.显示表格
/*
import java.awt.*;
import javax.swing.*;
import java.sql.*;
import javax.swing.table.*;
private Connection conn=null;
private Statement stmt=null;
private ResultSet rs=null;
*/
String[] colHeads=new String[]

{"au_fname","Phone","City"};
try {
 Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
 String url="jdbc:odbc:%%1";
 conn=DriverManager.getConnection(url,%%2,%%3);
 stmt=conn.createStatement();
 rs=stmt.executeQuery("Select Count(*) As

au_count From %%5");
 rs.next();
 int iCount=rs.getInt("au_count");
 Object[][] data=new Object[iCount][];
 int i=0;
 rs=stmt.executeQuery("Select * From %%5");
 while(rs.next()){
  data[i]=new Object[iCount];
  data[i][0]=rs.getString("au_fname");
  data[i][1]=rs.getString("Phone");
  data[i][2]=rs.getString("City");
  i++;
 }
 JTable table=new JTable(data,colHeads);
 JScrollPane jsp=new JScrollPane(table);
 this.add(jsp);
}catch(Exception e){
 e.printStackTrace();
}
finally{
 try {
  if(rs!=null)
   rs.close();
  if(stmt!=null)
   stmt.close();
  if(conn!=null)
   conn.close();
 } catch (SQLException e) {
  e.printStackTrace();
 }
}

4.操作表格
/*
import java.awt.*;
import javax.swing.*;
import java.sql.*;
import javax.swing.table.*;
private Connection conn = null;
private Statement stmt = null;
private ResultSet rs = null;
*/
JTable table;
Object[][] data;
JButton jb;
JScrollPane jsp;
JComboBox jcb;
JCheckBox jchb;
jcb=new JComboBox();
jchb=new JCheckBox();
jcb.addItem("男");
jcb.addItem("女");
String[] colHeads = { "id", "性别","是否" };
try {
 Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
 String url = "jdbc:odbc:%%1";
 conn = DriverManager.getConnection(url);
 stmt = conn.createStatement();
 rs = stmt.executeQuery("Select Count(id) As

count From %%2");
 rs.next();
 int iCount = rs.getInt("count");
 data = new Object[iCount][];
 int i = 0;
 rs = stmt.executeQuery("Select * From %%2");
 while (rs.next()) {
  data[i] = new Object[iCount];
  data[i][0] = rs.getString("id");
  data[i][1] = rs.getString("gender");
  data[i][2] = rs.getString("isMember");
  i++;
 }
 table = new JTable();
 DefaultTableModel dt = new DefaultTableModel

(data, colHeads); //
 table.setModel(dt);
 jsp = new JScrollPane(table);
 this.add(jsp, BorderLayout.CENTER);
 TableColumn tc = table.getColumn("性别");
 TableColumn tc2=table.getColumn("是否");
 tc.setCellEditor(new DefaultCellEditor(jcb));
 tc2.setCellEditor(new DefaultCellEditor(jchb));
} catch (Exception e) {
 e.printStackTrace();
} finally{
 try {
  if(rs!=null)
   rs.close();
  if(stmt!=null)
   stmt.close();
  if(conn!=null)
   conn.close();
 } catch (SQLException e) {
  e.printStackTrace();
 }
}
JPanel jp2 = new JPanel();
this.add(jp2, BorderLayout.NORTH);
JPanel jp = new JPanel(new FlowLayout());
jp2.add(jp);
jp.add(new JTextField(10));

5.数值范围查询
/*
import java.sql.*;
import javax.swing.*;
import java.awt.*;
import javax.swing.table.*;
private Connection conn = null;
private PreparedStatement pst = null;
private ResultSet rs = null;
*/
String[] colHeads=new String[]{"id","name","price"};
JScrollPane jsp;
JTable table;
Object[][] data;
int min = Integer.parseInt(jcb1.getSelectedItem

().toString());
int max = Integer.parseInt(jcb2.getSelectedItem

().toString());
String sql = "Select Count(*) As pro_count From %%2

Where %%3 Between ? And ?";
try {
 conn = DriverManager.getConnection(url);
String url="jdbc:odbc:%%1";
 pst = conn.prepareStatement(sql);
pst.setInt(1,min);
pst.setInt(2,max);
 rs = pst.executeQuery();
 rs.next();
 int iCount = rs.getInt("pro_count");
 Object[][] data = new Object[iCount][];
pst=conn.prepareStatment("Select * From %%2 Where %%3

Between ? And ?");
 int i = 0;
 while (rs.next()) {
  data[i] = new Object[3];
  data[i][0] = rs.getString("id");
  data[i][1] = rs.getString("name");
  data[i][2] = rs.getString("price");
  i++;
 }
table=new JTable();
 DefaultTableModel dt = new DefaultTableModel

(data, colHeads);
 table.setModel(dt);
jsp=new JScrollPane(table);
this.add(jsp,BorderLayout.CENTER);
} catch (Exception e1) {
 e1.printStackTrace();
} finally{
 try {
  if(rs!=null)
   rs.close();
  if(pst!=null)
   pst.close();
  if(conn!=null)
   conn.close();
 } catch (SQLException e) {
  e.printStackTrace();
 }
}

6.关闭时关闭连接
//import java.sql.*;
addWindowListener(new WindowAdapter{
 public void windowClosing(WindowEvent wevent){
  if(stmt!=null){
   try {
    if(rs!=null)
     rs.close();
    if(stmt!=null)
     stmt.close();
    if(conn!=null)
     conn.close();
   } catch (SQLException e) {
    e.printStackTrace();
   }
  }
 }
}

7.执行命令
/*
import java.sql.*;
private Connection conn=null;
private PreparedStatement pst=null;
*/
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String url="jdbc:odbc:%%1";
 conn=DriverManager.getConnection(url);
 pst=conn.prepareStatement("Insert Into grade(%

%2) Values (?)");
 pst.setInt(1,%%3);
 //pst.setString(2,%%3);
 pst.addBatch();
 pst.executeBatch();
//pst.execute();
} catch (SQLException e){
 e.printStackTrace();
}
finally{
 try {
  if (pst != null)
   pst.close();
  if (conn != null)
   conn.close();
 } catch (SQLException e) {
  e.printStackTrace();
 }
}

8.Oracle8/8i/9i数据库(thin模式)
/*
import java.sql.*;
private Connection conn = null;
private Statement stmt = null;
*/
Class.forName

("oracle.jdbc.driver.OracleDriver").newInstance();
String url="jdbc:oracle:thin:@localhost:1521:%%1"; //%

%1为数据库的SID
conn= DriverManager.getConnection(url,%%2,%%3); 
stmt=conn.createStatement();

9.DB2数据库
/*
import java.sql.*;
private Connection conn = null;
private Statement stmt = null;
*/
Class.forName("com.ibm.db2.jdbc.app.DB2Driver

").newInstance();
String url="jdbc:db2://localhost:5000/%%1"; //%%1为你的

数据库名
conn= DriverManager.getConnection(url,%%2,%%3); 
stmt=conn.createStatement();

10.Sql Server7.0/2000数据库
/*
import java.sql.*;
private Connection conn = null;
private Statement stmt = null;
*/
Class.forName

("com.microsoft.sqlserver.jdbc.SQLServerDriver").newIns

tance();
//String

url="jdbc:microsoft:sqlserver://localhost:1433;Database

Name=%%1"; //7.0、2000
String

url="jdbc:sqlserver://localhost:1433;DatabaseName=%%1";

//2005
//%%1为数据库名
conn= DriverManager.getConnection(url,%%2,%%3); 
stmt=conn.createStatement();

11.Sybase数据库
/*
import java.sql.*;
private Connection conn = null;
private Statement stmt = null;
*/
Class.forName("com.sybase.jdbc.SybDriver").newInstance

();
String url =" jdbc:sybase:Tds:localhost:5007/%%1";//%%1

为你的数据库名
Properties sysProps = System.getProperties();
sysProps.put("user",%%2);
sysProps.put("password",%%3);
conn= DriverManager.getConnection(url, SysProps); 
stmt=conn.createStatement();

12.Informix数据库
/*
import java.sql.*;
private Connection conn = null;
private Statement stmt = null;
*/
Class.forName

("com.informix.jdbc.IfxDriver").newInstance();
String url = "jdbc:informix-sqli://123.45.67.89:1533/%

%1:INFORMIXSERVER=myserver; //%%1为数据库名
conn= DriverManager.getConnection(url,%%2,%%3); 
stmt=conn.createStatement();

13.MySQL数据库
/*
import java.sql.*;
private Connection conn = null;
private Statement stmt = null;
*/
//Class.forName("org.gjt.mm.mysql.Driver").newInstance

();
Class.forName("com.mysql.jdbc.Driver");
String url ="jdbc:mysql://localhost:3306/%%1"; //%%1为

数据库名
//String url ="jdbc:mysql://localhost:3306/%%1?

user=root&password=root&useUnicode=true&characterEncodi

ng=gbk";
//String url ="jdbc:mysql://localhost:3306/%%1?

characterEncoding=UTF-8";
//String url ="jdbc:mysql://localhost:3306/%%1?

characterEncoding=gbk";
conn= DriverManager.getConnection(url,%%2,%%3);

//,"root","root"
stmt=conn.createStatement();

14.PostgreSQL数据库
/*
import java.sql.*;
private Connection conn = null;
private Statement stmt = null;
*/
Class.forName("org.postgresql.Driver").newInstance();
String url ="jdbc:postgresql://localhost/%%1"; //%%1为

数据库名
conn= DriverManager.getConnection(url,%%2,%%3);
stmt=conn.createStatement();

15.access数据库直连用ODBC的
/*
import java.sql.*;
private Connection conn = null;
private Statement stmt = null;
*/
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver") ;
String url="jdbc:odbc:Driver={MicroSoft Access Driver

(*.mdb)};DBQ="+application.getRealPath(%%1);
conn = DriverManager.getConnection(url,%%2,%%3);
stmt=conn.createStatement();

16.程序计时
long time1=System.currentTimeMillis();
long time2=System.currentTimeMillis();
long %%1=time2-time1; //interval

17.延时
try {
 Thread.sleep(Integer.Parse(%%1));
} catch(InterruptedException e) {
 e.printStackTrace();
}

18.连接Excel文件
/*
import java.sql.*;
private Connection conn = null;
private Statement stmt = null;
*/
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String url = "jdbc:odbc:driver={Microsoft Excel Driver

(*.xls)};DBQ="+application.getRealPath(%%1); // 不设置

数据源
conn= DriverManager.getConnection(url,%%2,%%3);
stmt=conn.createStatement();

19.GDI+时钟
import java.awt.*;
import java.awt.geom.*;
import java.util.*;
import javax.swing.*;
public class Clock extends JComponent {
 private static final Color INTEGRAL_COLOR = new

Color(0, 128, 128);
 private int radius;
 private Calendar currentTime =

Calendar.getInstance();
 private double s = 0.03;
 public Clock(int radius) {
  this.radius = radius;
 }
 public void setCurrentTime(Date time)
 {
  this.currentTime.setTime(time);
 }
 public void setCurrentTime(long millis) {
  this.currentTime.setTimeInMillis

(millis);
 }
 public Dimension getPreferredSize() {
  Insets insets = getInsets();
  int r = (int) (radius == -1 ? 0 :

radius * (1 + s)) + 1;
  return new Dimension(r * 2 +

insets.left + insets.right, r * 2
   + insets.top + insets.bottom);
 }
 protected void paintComponent(Graphics g) {
  super.paintComponent(g);
  Graphics2D g2d = (Graphics2D) g;
  g2d.setRenderingHint

(RenderingHints.KEY_ANTIALIASING,
   

RenderingHints.VALUE_ANTIALIAS_ON);
  Insets insets = getInsets();
  int wid = getWidth() - insets.left -

insets.right;
  int hei = getHeight() - insets.top -

insets.bottom;
  int r = (int) ((Math.min(wid, hei)) / 2

/ (1 + s));
  g2d.translate(insets.left + r * (1 +

s), insets.top + r * (1 + s));
  g2d.scale(1, -1);
  for (int i = 0; i < 60; i++) {
   int angle = 90 - i * 6;
   double pos[] = calcPos(r,

angle);
   paintMinuteDot(r, g2d, pos[0],

pos[1], i % 5 == 0);
  }
  paintHourPointer(r, g2d);
  paintMinutePointer(r, g2d);
  paintSecondPointer(r, g2d);
  paintCenterPoint(g2d);
  g2d.scale(1, -1);
  g2d.translate(-insets.left - r * (1 +

s), -insets.top - r * (1 + s));
 }
 private void paintCenterPoint(Graphics2D g2d) {
  g2d.setColor(Color.BLUE);
  Rectangle2D rect = new

Rectangle2D.Double(-2, -2, 4, 4);
  g2d.fill(rect);
 }
 private void paintMinutePointer(int r,

Graphics2D g2d) {
  int minute = currentTime.get

(Calendar.MINUTE);
  int second = currentTime.get

(Calendar.SECOND);
  double angle = 90 - (minute + second /

60.0) * 6;
  Shape pointerShape =

createPointerShape(r * 0.8, r * 0.04, r * 0.08,
   angle);
  g2d.setColor(Color.LIGHT_GRAY);
  g2d.fill(pointerShape);
  g2d.setColor(Color.DARK_GRAY);
  g2d.draw(pointerShape);
 }
 private void paintHourPointer(int r, Graphics2D

g2d) {
  int hour = currentTime.get

(Calendar.HOUR);
  int minute = currentTime.get

(Calendar.MINUTE);
  int second = currentTime.get

(Calendar.SECOND);
  double angle = 90 - (hour + minute /

60.0 + second / 3600.0) * 30;
  Shape pointerShape =

createPointerShape(r * 0.6, r * 0.06, r * 0.1,
   angle);
  g2d.setColor(Color.LIGHT_GRAY);
  g2d.fill(pointerShape);
  g2d.setColor(Color.DARK_GRAY);
  g2d.draw(pointerShape);
 }
 private Shape createPointerShape(double r1,

double r2, double r3,
  double angle) {
   GeneralPath gp = new

GeneralPath();
   double[] pos = calcPos(r1,

angle);
   double[] pos1 = calcPos(r2,

angle + 90);
   gp.append(new Line2D.Double

(pos[0], pos[1], pos1[0], pos1[1]), true);
   double[] pos2 = calcPos(r3,

angle + 180);
   gp.lineTo((float) pos2[0],

(float) pos2[1]);
   double[] pos3 = calcPos(r2,

angle + 270);
   gp.lineTo((float) pos3[0],

(float) pos3[1]);
   gp.closePath();
   return gp;
 }
 private void paintSecondPointer(int r,

Graphics2D g2d) {
  g2d.setColor(Color.BLACK);
  int second = currentTime.get

(Calendar.SECOND);
  int angle = 90 - second * 6;
  double pos[] = calcPos(r * 0.9, angle);
  double pos1[] = calcPos(r * 0.2, angle

+ 180);
  Line2D line = new Line2D.Double(pos1

[0], pos1[1], pos[0], pos[1]);
  g2d.draw(line);
 }
 private void paintMinuteDot(int r, Graphics2D

g2d, double x, double y,
  boolean flag) {
   g2d.setColor(flag ? Color.RED :

Color.BLACK);
   if (flag) {
    // Rectangle2D rect =

new Rectangle2D.Double(
    Ellipse2D rect = new

Ellipse2D.Double(x - r * s, y - r * s, r * s
     * 2, r * s *

2);
    g2d.fill(rect);
   } else {
    // Rectangle2D rect =

new Rectangle2D.Double(
    Ellipse2D rect = new

Ellipse2D.Double(x - r * 0.02, y - r * 0.02,
     r * 0.04, r *

0.04);
    g2d.fill(rect);
   }
 }
 private double[] calcPos(double r, double

angle) {
  double radian = Math.toRadians(angle);
  double x = r * Math.cos(radian);
  double y = r * Math.sin(radian);

  return new double[] { x, y };
 }
 public static void main(String[] args) {
  try {
   UIManager.setLookAndFeel

(UIManager.getSystemLookAndFeelClassName());
  } catch (Exception e) {
   e.printStackTrace();
  }
  final Clock clock = new Clock(50);
  clock.setBorder

(BorderFactory.createEmptyBorder(10, 10, 10, 10));
  JFrame f = new JFrame("GDI+时钟");
  // f.setBounds(380,200,500,600);
  f.this.add(clock, BorderLayout.CENTER);
  f.pack();
  f.setLocationRelativeTo(null);
  f.setDefaultCloseOperation

(JFrame.EXIT_ON_CLOSE);
  f.setVisible(true);
  new Thread() {
   public void run() {
    while (true) {
     try {
      

Thread.sleep(1000);
     } catch

(InterruptedException ex) {
      

ex.printStackTrace();
     }
     

clock.setCurrentTime(System.currentTimeMillis());
     clock.repaint

();
    }
   }
  }.start();
 }
}

20.数据库存入二进制字段数据
/*
import java.sql.*;
private Connection conn = null;
private PreparedStatement stmt = null;
*/
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String url = "jdbc:odbc:%%1");
conn= DriverManager.getConnection(url,%%2,%%3);
InputStream pic = new FileInputStream(dto.get

(i).getLibPic());
sql = "INSERT INTO piclib (name,pic,sign,remark) VALUES

(?,?,?,?)";
pst = conn.prepareStatement(sql);
pst.setString(1, dto.get(i).getName());          
pst.setBinaryStream(2,pic,(int)dto.get(i).getLibPic

().length());

21.数据库取出二进制字段数据
/*
import java.sql.*;
private Connection conn = null;
private ResultSet rs = null;
private PreparedStatement pstmt = null;
*/
public class DemoDisplayBinaryDataFromDatabase {
 public static Connection getConnection() throws

Exception {
  String driver =

"oracle.jdbc.driver.OracleDriver";
  String url =

"jdbc:oracle:thin:@localhost:1521:databaseName";
  String username = "name";
  String password = "password";
  Class.forName(driver);
  Connection conn =

DriverManager.getConnection(url, username, password);
  return conn;
 }
}

public static class BitmapHelper  
{  
 public static Bitmap BytesToBitmap(byte[]

Bytes)  
 {  
  MemoryStream stream = null;  
  try 
  {  
   stream = new MemoryStream

(Bytes);  
   return new Bitmap((Image)new

Bitmap(stream));  
  }  
  catch (ArgumentNullException ex)  
  {  
   throw ex;  
  }  
  catch (ArgumentException ex)  
  {  
   throw ex;  
  }  
  finally 
  {  
   stream.Close();  
  }  
 }  

 public static byte[] BitmapToBytes(Bitmap

Bitmap)  
 {  
  MemoryStream ms = null;  
  try 
  {  
   ms = new MemoryStream();  
   Bitmap.Save(ms,

Bitmap.RawFormat);  
   byte[] byteImage = new Byte

[ms.Length];  
   byteImage = ms.ToArray();  
   return byteImage;  
  }  
  catch (ArgumentNullException ex)  
  {  
   throw ex;  
  }  
  finally 
  {  
   ms.Close();  
  }  
 }  

public static class BitmapHelper
{
 public static Bitmap BytesToBitmap(byte[]

Bytes)
 {
  MemoryStream stream = null;
  try
  {
   stream = new MemoryStream

(Bytes);
   return new Bitmap((Image)new

Bitmap(stream));
  }
  catch (ArgumentNullException ex)
  {
   throw ex;
  }
  catch (ArgumentException ex)
  {
   throw ex;
  }
  finally
  {
   stream.Close();
  }
 }
 public static byte[] BitmapToBytes(Bitmap

Bitmap)
 {
  MemoryStream ms = null;
  try
  {
   ms = new MemoryStream();
   Bitmap.Save(ms,

Bitmap.RawFormat);
   byte[] byteImage = new Byte

[ms.Length];
   byteImage = ms.ToArray();
   return byteImage;
  }
  catch (ArgumentNullException ex)
  {
   throw ex;
  }
  finally
  {
   ms.Close();
  }
 }
}
/*
存进数据库可以直接用Image对象:
SqlCommand.Parameters.Add

("@image",SqlDbType.Image).Value=myImage;(myImage为

Image对象)
从数据库取出来,是byte数组,可以用上面的函数进行转换
*/
  String query = "SELECT raw_column,

long_raw_column FROM binary_table WHERE id = ?";
  try {
   conn = getConnection();
   Object[] results = new Object

[2];
   pstmt = conn.prepareStatement

(query);
   pstmt.setString(1, "0001");
   rs = pstmt.executeQuery();
   rs.next();
   // materialize binary data onto

client
   results[0] = rs.getBytes

("RAW_COLUMN");
   results[1] = rs.getBytes

("LONG_RAW_COLUMN");
  } finally {
   rs.close();
   pstmt.close();
   conn.close();
  }

22.批量执行SQL和存储过程
/*
import java.sql.*;
private Connection conn = null;
private PreparedStatement pst = null;
private CallableStatement cs = null;
*/
try {
 Class.forName

("oracle.jdbc.driver.OracleDriver").newInstance();
 String url =

"jdbc:oracle:thin:@localhost:1521:%%1"; // %%1为数据库

的SID
 conn = DriverManager.getConnection(url,%%2,%

%3);
 cs = conn.prepareCall("{call abc(?,?}");
 pst = conn.prepareStatement("Insert Into grade

(%%1) Values (?)");
 pst.setString(1, "");
 // pst.setInt(2,%%2);
 pst.addBatch();
 pst.executeBatch();
} catch (SQLException e) {
 e.printStackTrace();
} catch (Exception e) {
 e.printStackTrace();
} finally {
 try {
  if (pst != null)
   pst.close();
  if (cs != null)
   cs.close();
  if (conn != null)
   conn.close();
 } catch (SQLException e) {
  e.printStackTrace();
 }
}

23.自动填入数据
/*
import java.awt.*;
import java.awt.event.*;
import java.awt.datatransfer.*;
*/
Clipboard clipboard = Toolkit.getDefaultToolkit

().getSystemClipboard();
Transferable tText = new StringSelection("abcD");
clipboard.setContents(tText, null);
try {
 Robot r = new Robot();
 r.keyPress(KeyEvent.VK_CONTROL);
 r.keyPress(KeyEvent.VK_V);
 r.keyRelease(KeyEvent.VK_V);
 r.keyRelease(KeyEvent.VK_CONTROL);
} catch (AWTException e) {
 e.printStackTrace();
}

24.验证码随机数
//import java.awt.*;
Random random = new Random(555L);
int %%1=random.nextInt(8999)+1000;

25.查数据库表的Id最大值
//import java.sql.*;
private int getTableId(Connection conn, String table) {
 int returnId = 0;// 默认为无记录
 String sqlString = "Select * From ?";
 PreparedStatement ps = null;
 ResultSet rs = null;
 try {
  ps = conn.prepareStatement(sqlString);
  ps.setString(1, table);
  rs = ps.executeQuery();
  rs.afterLast();
  returnId = rs.getRow();// 让returnId等

于表中记录总数
 } catch (SQLException e) {
  returnId = -1; // 捕获到异常则代表数据

库中没有此表
 } finally {
  if (returnId > 0) {
   try {
    ps =

conn.prepareStatement("Select Max(id) From ?");
    ps.setString(1, table);
    ps.addBatch();
    rs=ps.executeQuery();
    rs.next();
    returnId=rs.getInt

("id");
   } catch (SQLException e) {
    e.printStackTrace();
   }
  }
  try {
   rs.close();
   ps.close();
   conn.close();
  } catch (SQLException e) {
   e.printStackTrace();
  }
 }
 return returnId;
}

26.mysql分页
/*
import java.sql.*;
import java.util.*;
private Connection conn=null;
private PreparedStatement pst=null;
private ResultSet rs=null;
private ResultSetMetaData rsmd=null;
private int rowCount=0;
private int pageCount=0;
private int pageSize=0;
*/
String sqlStr=%%1;
pageSize=%%2; //2000
int ipage=%%3; //1
try {
 Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e4) {
 e4.printStackTrace();
}
try{
 conn=DriverManager.getConnection

("jdbc:mysql://localhost:3306/%%1",%%2,%%3);
 //conn=DriverManager.getConnection

("jdbc:mysql://localhost:3306/%%1?

characterEncoding=UTF-8",%%2,%%3);
 //conn=DriverManager.getConnection

("jdbc:mysql://localhost:3306/%%1?

characterEncoding=gbk",%%2,%%3);
 String sqlStr = "Select * From ? Where id>?

limit ?,?";
 pst= con.prepareStatement(sqlStr);
 int irows=pageSize*(ipage-1);
 pst.setString(1, table1);
 pst.setInt(2, targetid);
 if (rs != null) {
  rs.last();
  rowCount = rs.getRow();
  rs.first();
  pageCount = (rowCount - 1) / pageSize +

1;
 }
 pst.setInt(3, irows);
 pst.setInt(4, pageSize);
 rs=pst.executeQuery();
 //rsmd = rs.getMetaData();
 if(rs!=null)
 {
  rs.last();
  rowCount=rs.getRow();
  rs.first();
  pageCount=(rowCount-1)/pageSize+1;
 }
 rs=pst.executeQuery(strSql);
 rsmd=rs.getMetaData();
}
catch(SQLException e)
{
 e.printStackTrace();
}
Vector vData=new Vector();
try{
 if(rs!=null)
 {
  while(rs.next())
  {
   String[] sData=new String

[rsmd.getColumnCount()];
   for(int

j=0;j<rsmd.getColumnCount();j++)
   {
    sData[j]=rs.getString

(j+1);
   }
   vData.addElement(sData);
  }
 rs.close();
 }
if(pst!=null)
 pst.close();
if(conn!=null)
 conn.close();
}
catch(SQLException e)
{
 e.printStackTrace();
}
Vector %%4=vData;

27.Sql Server 2005分页
/*
import java.sql.*;
import java.util.*;
private Connection conn=null;
private PreparedStatement pst=null;
private ResultSet rs=null;
private ResultSetMetaData rsmd=null;
private int rowCount=0;
private int pageCount=0;
private int pageSize=0;
*/
String sqlStr=%%1;
pageSize=%%2; //2000
int ipage=%%3; //1
try {
 Class.forName

("com.microsoft.sqlserver.jdbc.SQLServerDriver").newIns

tance();
} catch (ClassNotFoundException e4) {
 e4.printStackTrace();
}
//String

url="jdbc:microsoft:sqlserver://localhost:1433;Database

Name=%%1"; //7.0、2000
String

url="jdbc:sqlserver://localhost:1433;DatabaseName=%%1";

//2005
try{
 conn= DriverManager.getConnection(url,%%2,%%3);

 SELECT TOP %%2 * FROM %%1 WHERE (ID NOT IN

(SELECT TOP %%2*%%3 id FROM %%1 ORDER BY id)) ORDER BY

ID

  页大小
  %%2

  页数
  %%3

  String sqlStr = "Select top 1 * From ?

Where id>? limit ?,?"; //"Select top 1 * From ? Where

id>? limit ?,?"
 pst= con.prepareStatement(sqlStr);
 int irows=pageSize*(ipage-1);
 pst.setString(1, table1);
 pst.setInt(2, targetid);
 if (rs != null) {
  rs.last();
  rowCount = rs.getRow();
  rs.first();
  pageCount = (rowCount - 1) / pageSize +

1;
 }
 pst.setInt(3, irows);
 pst.setInt(4, pageSize);
 rs=pst.executeQuery();
 //rsmd = rs.getMetaData();
 if(rs!=null)
 {
  rs.last();
  rowCount=rs.getRow();
  rs.first();
  pageCount=(rowCount-1)/pageSize+1;
 }
 sqlStr+=(" limit "+irows+","+pageSize);
 pst=con.createStatement();
 rs=pst.executeQuery(strSql);
 rsmd=rs.getMetaData();
}
catch(SQLException e)
{
 e.printStackTrace();
}
Vector vData=new Vector();
try{
 if(rs!=null)
 {
  while(rs.next())
  {
   String[] sData=new String

[rsmd.getColumnCount()];
   for(int

j=0;j<rsmd.getColumnCount();j++)
   {
    sData[j]=rs.getString

(j+1);
   }
   vData.addElement(sData);
  }
 rs.close();
 }
if(pst!=null)
 pst.close();
if(conn!=null)
 conn.close();
}
catch(SQLException e)
{
 e.printStackTrace();
}
Vector %%4=vData;

28.Oracle分页
/*
import java.sql.*;
import java.util.*;
private Connection conn=null;
private PreparedStatement pst=null;
private ResultSet rs=null;
private ResultSetMetaData rsmd=null;
private int rowCount=0;
private int pageCount=0;
private int pageSize=0;
*/
String sqlStr=%%1;
pageSize=%%2; //2000
int ipage=%%3; //1
String driver = "oracle.jdbc.driver.OracleDriver";
String url = "jdbc:oracle:thin:@localhost:1521:%%1";
try {
 Class.forName(driver);
} catch (ClassNotFoundException e4) {
 e4.printStackTrace();
}
try{
 conn= DriverManager.getConnection(url,%%4,%%5);
 String sqlStr = "Select * From ? Where id>?

limit ?,?"; //parition
 pst= con.prepareStatement(sqlStr);
 int irows=pageSize*(ipage-1);
 pst.setString(1, table1);
 pst.setInt(2, targetid);
 if (rs != null) {
  rs.last();
  rowCount = rs.getRow();
  rs.first();
  pageCount = (rowCount - 1) / pageSize +

1;
 }
 pst.setInt(3, irows);
 pst.setInt(4, pageSize);
 rs=pst.executeQuery();
 //rsmd = rs.getMetaData();
 if(rs!=null)
 {
  rs.last();
  rowCount=rs.getRow();
  rs.first();
  pageCount=(rowCount-1)/pageSize+1;
 }
 sqlStr+=(" limit "+irows+","+pageSize);
 pst=con.createStatement();
 rs=pst.executeQuery(strSql);
 rsmd=rs.getMetaData();
}
catch(SQLException e)
{
 e.printStackTrace();
}
Vector vData=new Vector();
try{
 if(rs!=null)
 {
  while(rs.next())
  {
   String[] sData=new String

[rsmd.getColumnCount()];
   for(int

j=0;j<rsmd.getColumnCount();j++)
   {
    sData[j]=rs.getString

(j+1);
   }
   vData.addElement(sData);
  }
 rs.close();
 }
if(pst!=null)
 pst.close();
if(conn!=null)
 conn.close();
}
catch(SQLException e)
{
 e.printStackTrace();
}
Vector %%4=vData;

29.生成GUID
//两种方式生成guid 与uuid
//需要comm log 库
/*
import java.net.*;
import java.security.*;
import java.util.*;
   protected final org.apache.commons.logging.Log

logger = org.apache.commons.logging.LogFactory
      .getLog(getClass());
   public String valueBeforeMD5 = "";
   public String valueAfterMD5 = "";
   private static Random myRand;
   private static SecureRandom mySecureRand;
   private static String s_id;
   private static final int PAD_BELOW = 0x10;
   private static final int TWO_BYTES = 0xFF;
    // Static block to take care of one time

secureRandom seed.
    // It takes a few seconds to initialize

SecureRandom.  You might
    // want to consider removing this static block or

replacing
    // it with a "time since first loaded" seed to

reduce this time.
    // This block will run only once per JVM instance.
   static {
      mySecureRand = new SecureRandom();
      long secureInitializer = mySecureRand.nextLong();
      myRand = new Random(secureInitializer);
      try {
         s_id = InetAddress.getLocalHost().toString();
      } catch (UnknownHostException e) {
         e.printStackTrace();
      }
   }
*/

   /*
    * Default constructor.  With no specification of

security option,
    * this constructor defaults to lower security, high

performance.
    */
   public RandomGUID() {
      getRandomGUID(false);
   }
   /*
    * Constructor with security option.  Setting secure

true
    * enables each random number generated to be

cryptographically
    * strong.  Secure false defaults to the standard

Random function seeded
    * with a single cryptographically strong random

number.
    */
   public RandomGUID(boolean secure) {
      getRandomGUID(secure);
   }
   /*
    * Method to generate the random GUID
    */
   private void getRandomGUID(boolean secure) {
      MessageDigest md5 = null;
      StringBuffer sbValueBeforeMD5 = new StringBuffer

(128);
      try {
         md5 = MessageDigest.getInstance("MD5");
      } catch (NoSuchAlgorithmException e) {
         logger.error("Error: " + e);
      }
      try {
         long time = System.currentTimeMillis();
         long rand = 0;
         if (secure) {
            rand = mySecureRand.nextLong();
         } else {
            rand = myRand.nextLong();
         }
         sbValueBeforeMD5.append(s_id);
         sbValueBeforeMD5.append(":");
         sbValueBeforeMD5.append(Long.toString(time));
         sbValueBeforeMD5.append(":");
         sbValueBeforeMD5.append(Long.toString(rand));
         valueBeforeMD5 = sbValueBeforeMD5.toString();
         md5.update(valueBeforeMD5.getBytes());
         byte[] array = md5.digest();
         StringBuffer sb = new StringBuffer(32);
         for (int j = 0; j < array.length; ++j) {
            int b = array[j] & TWO_BYTES;
            if (b < PAD_BELOW)
               sb.append('0');
            sb.append(Integer.toHexString(b));
         }
         valueAfterMD5 = sb.toString();
      } catch (Exception e) {
         logger.error("Error:" + e);
      }
   }
   /*
    * Convert to the standard format for GUID
    * (Useful for SQL Server UniqueIdentifiers, etc.)
    * Example: C2FEEEAC-CFCD-11D1-8B05-00600806D9B6
    */
   public String toString() {
      String raw = valueAfterMD5.toUpperCase();
      StringBuffer sb = new StringBuffer(64);
      sb.append(raw.substring(0, 8));
      sb.append("-");
      sb.append(raw.substring(8, 12));
      sb.append("-");
      sb.append(raw.substring(12, 16));
      sb.append("-");
      sb.append(raw.substring(16, 20));
      sb.append("-");
      sb.append(raw.substring(20));
      return sb.toString();
   }
         //valueBeforeMD5 //Seeding String
         //valueAfterMD5 //rawGUID
         //toString() //RandomGUID
//UUID uuid = UUID.randomUUID();

30.计算日期时间差
/*
import java.text.*;
import java.util.*;
import java.awt.*;
import java.awt.datatransfer.*;
import java.io.*;
*/
 public static long fromDateStringToLong(String

inVal) { // 此方法计算时间毫秒
  Date date = null; // 定义时间类型
  SimpleDateFormat inputFormat = new

SimpleDateFormat("MM-dd-yy hh:mm");
  try {
   date = inputFormat.parse

(inVal); // 将字符型转换成日期型
  } catch (Exception e) {
   e.printStackTrace();
  }
  return date.getTime(); // 返回毫秒数
 }
  // 取得系统剪贴板里可传输的数据构造的

Java对象
  Transferable t =

Toolkit.getDefaultToolkit().getSystemClipboard()
    .getContents(null);
  try {
   if (t != null &&

t.isDataFlavorSupported(DataFlavor.stringFlavor)) {
    // 因为原系的剪贴板里有

多种信息, 如文字, 图片, 文件等
    // 先判断开始取得的可传

输的数据是不是文字, 如果是, 取得这些文字
    String s = (String)

t.getTransferData(DataFlavor.stringFlavor);
    String[] arr = s.split

("\n");
    StringBuilder sb = new

StringBuilder(1024);
    for (String sss : arr)

{
     if (!sss.trim

().equals("")) {
      long

startT = fromDateStringToLong(sss); // 定义上机时间
      long

endT = new Date().getTime(); // 定义下机时间
      long ss

= (endT - startT) / (1000); // 共计秒数
      int MM

= (int) ss / 60; // 共计分钟数
      int hh

= (int) ss / 3600; // 共计小时数
      int dd

= (int) hh / 24; // 共计天数
      hh = hh

- dd * 24;
      MM = MM

- (dd * 24 + hh) * 60;
      

sb.append((dd >= 100 ? "" : "0"));
      

sb.append((dd >= 10 ? "" : "0"));
      

sb.append(dd);
      

sb.append(" ");
      

sb.append(hh);
      

sb.append(":");
      

sb.append(MM);
      

sb.append("\r\n");
     }
    }
    Clipboard clipboard =

Toolkit.getDefaultToolkit()
      

.getSystemClipboard();
    Transferable tText =

new StringSelection(sb.toString());
    clipboard.setContents

(tText, null);
   }
  } catch (UnsupportedFlavorException ex)

{
   ex.printStackTrace();
  } catch (IOException ex) {
   ex.printStackTrace();
  }

------- android培训 java培训 、期待与您交流! ----------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值