利用javaSE6.0的Derby嵌入式数据库,我将javaSE6.0安装目录下的“db\lib"子目录中的derby.jar文件加到classpath中,
 可是有错我不知道是什么原因,(是没有jdbc的驱动程序吗?要是没有怎么加?)
Exception in thread "main" java.sql.SQLException: No suitable driver
at java.sql.DriverManager.getConnection(DriverManager.java:545)
at java.sql.DriverManager.getConnection(DriverManager.java:171)
at manager2.ContractCardManager.createDatabase(ContractCardManager.java:145)
at manager2.ContractCardManager.initConnection(ContractCardManager.java:117)
at manager2.ContractCardManager.<init>(ContractCardManager.java:53)
at manager2.ContractCardManager.main(ContractCardManager.java:309)因为读数据库连接实在是不太知道,百度上说的不太明白程序代码在附件中

解决方案 »

  1.   

    package manager2;
    import java.util.*;
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import java.io.*;
    import java.sql.*;
    import javax.swing.event.*;public class ContractCardManager extends JFrame
    implements ActionListener,ListSelectionListener
    {
    private static final long serialVersionUID=1L;
     
    JLabel labelList=new JLabel("姓名列表");
    JList cnameList=new JList();
    JScrollPane jspList=new JScrollPane(cnameList);
    JLabel[] labelArray=new JLabel[]
    {new JLabel(" 姓  名 :"),new JLabel(" 邮  编 :"),
     new JLabel(" 电  话 :"),new JLabel(" 传  真 :"),
     new JLabel(" 手  机 :"),new JLabel(" 公  司 :"),
     new JLabel("电子邮件:"),new JLabel("通信地址:")};
    JTextField[] fieldArray=new JTextField[8];
    JButton[] buttonArray=new JButton[]
    {
         new JButton("新建名片"),
         new JButton("删除名片"),
         new JButton("更新名片")
    };
    //是否为新键状态标志
    boolean newFlag=false;

     
    Connection con;
    PreparedStatement psInsert;
    PreparedStatement psUpdate;
    PreparedStatement psDelete;
    PreparedStatement psSelect;
    PreparedStatement psSelectById;

     
    Vector<String> nameList=new Vector<String>();
    Vector<Integer> idList=new Vector<Integer>();

         
    public ContractCardManager() throws SQLException
    {
     
    this.initFrame();
     
    this.initComponent();
     
    this.initConnection();
     
    this.initNameList();
    }

    public void initNameList() throws SQLException
    {
     
    ResultSet rs=this.psSelect.executeQuery();
    while(rs.next())
    {
    this.nameList.add(rs.getString(2));
    this.idList.add(rs.getInt(1));
    }
     
    this.cnameList.setListData(this.nameList);
    }

    public void initFrame()
    {
     
            this.setTitle("名片管理器");
           
            this.setResizable(false);
         
            this.setBounds(200,200,460,330);
       
            this.setLayout(null);
      
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    public void initComponent()
    {
    jspList.setBounds(10,30,100,260);
    this.add(jspList);
    labelList.setBounds(10,10,100,20);
    this.add(labelList);
     
    for(int i=0;i<8;i++)
    {
    labelArray[i].setBounds(130,30+i*30,70,20);
    this.add(labelArray[i]);
    fieldArray[i]=new JTextField();
    fieldArray[i].setBounds(210,30+i*30,210,20);
    this.add(fieldArray[i]);
    }
     
    for(int i=0;i<3;i++)
    {
    buttonArray[i].setBounds(120+100*i,270,95,20);
    this.add(buttonArray[i]);
    buttonArray[i].addActionListener(this);
    }
     
    this.cnameList.addListSelectionListener(this);
    }

    public void initConnection() throws SQLException
    {
    if(!isDatabaseExists())
    { con=this.createDatabase();
    }
    else
    {//数据库存在
    con=DriverManager.getConnection(
                        "jdbc:derby:db/cards;create=false","","");
    }
    psInsert=con.prepareStatement("insert into contacts values(?,?,?,?,?,?,?,?,?)");
    psUpdate=con.prepareStatement("update contacts set name=?,"
    +"zip=?,phone=?,fax=?,mobile=?,firm=?,email=?,"
    +"address1=? where id=?");
    psDelete=con.prepareStatement("delete from contacts where id=?");
    psSelect=con.prepareStatement("select id,name from contacts order by id");
    psSelectById=con.prepareStatement("select * from contacts where id=?");
    }

    public void setNewStatus(boolean b)
    {
    this.buttonArray[1].setEnabled(b);
    this.buttonArray[2].setEnabled(b);
    this.cnameList.setEnabled(b);
    }

    private Connection createDatabase() throws SQLException{
            Connection conn=null;
         
                conn = DriverManager.getConnection(
                        "jdbc:derby:db/cards;create=true","","");
           
                String createTableSQL="CREATE TABLE " +
                        "contacts(name varchar(20)," +
                        "zip varchar(15)," +
                        "phone varchar(20)," +
                        "fax varchar(20),"+
                        "mobile varchar(15),"+
                        "firm varchar(80)," +                    
                        "email varchar(127),"+
                        "address1 varchar(127),"+              
                        "id int PRIMARY KEY)";
                Statement st=conn.createStatement();
                st.execute(createTableSQL);  
                st.close();
            return conn;
        }

    private boolean isDatabaseExists()
    {
            //默认数据库不存在
            boolean dbExists = false;
            //声明数据库路径的File对象
            File dbFileDir = new File("db/cards");
            if (dbFileDir.exists()) 
            {
                dbExists = true;
            }
            return dbExists;
        }
        public void actionPerformed(ActionEvent e) 
        {
         try{
          if(e.getSource()==this.buttonArray[0])
          {   
             if(this.newFlag==false)
             {  for(JTextField jt:fieldArray)
    {
    jt.setText("");
    }
     
    this.buttonArray[0].setText("保存名片");  
     
    this.newFlag=true; 
    this.setNewStatus(false);    
             }
             else
             {         
              int nextId=0;
              if(this.idList.size()!=0)
              {nextId=this.idList.get(this.idList.size()-1)+1;}
              
              for(int i=0;i<8;i++)
              {
              this.psInsert.setString((i+1),this.fieldArray[i].getText());
              }
              this.psInsert.setInt(9,nextId);
              this.psInsert.executeUpdate();
              this.nameList.add(this.fieldArray[0].getText());
              this.idList.add(nextId);
              this.cnameList.setListData(this.nameList);
              this.buttonArray[0].setText("新建名片");  
       
    this.newFlag=false; 
    this.setNewStatus(true); 
             }
          }
          else if(e.getSource()==this.buttonArray[1])
          {       if(!this.cnameList.isSelectionEmpty())
             {     int index=this.cnameList.getSelectedIndex();
             this.psDelete.setInt(1,this.idList.get(index));
             this.psDelete.executeUpdate();
             this.idList.remove(index);
             this.nameList.remove(index);
             this.cnameList.setListData(this.nameList);
             }
             else
             { 
                    Toolkit.getDefaultToolkit().beep();
       
                    JOptionPane.showMessageDialog(this,
                            "请在联系人列表中选中要删除的联系人姓名!",
                            "错误",
                            JOptionPane.ERROR_MESSAGE);        
             }
          }
          else if(e.getSource()==this.buttonArray[2])
          {           if(!this.cnameList.isSelectionEmpty())
                              int index=this.cnameList.getSelectedIndex();
                
                    for(int i=1;i<=8;i++)
                    {
                     this.psUpdate.setString(i,this.fieldArray[i-1].getText());
                    }
                    this.psUpdate.setInt(9,this.idList.get(index));
                    this.psUpdate.executeUpdate();
                    this.nameList.set(index,this.fieldArray[0].getText());
                    this.cnameList.setListData(this.nameList);
             }
             else
             {
                    Toolkit.getDefaultToolkit().beep();
                    JOptionPane.showMessageDialog(this,
                            "请在联系人列表中选中要更新的联系人姓名!",
                            "错误",
                            JOptionPane.ERROR_MESSAGE);        
             }           
          }      
           }catch(Exception ee)
           {
             ee.printStackTrace();
           }
        }
        public void valueChanged(ListSelectionEvent e)
        {
         try
         {   
         int index=this.cnameList.getSelectedIndex();
         this.psSelectById.setInt(1,index);
         ResultSet rs=this.psSelectById.executeQuery();
         if(rs.next())
         {
           for(int i=0;i<8;i++)
           {
         this.fieldArray[i].setText(rs.getString((i+1)));
           }    
         }
         }
         catch(Exception ee)
         {
         ee.printStackTrace();
         }
        }
    public static void main(String args[]) throws SQLException

    new ContractCardManager().setVisible(true);
    }
    }
      

  2.   

    这个程序就是网上下的,可是不行啊
    利用javaSE6.0的Derby嵌入式数据库我将javaSE6.0安装目录下的“db\lib"子目录中的derby.jar以及derbyclient.jar文件加到classpath中, 
      可是有错我不知道是什么原因是没有jdbc的驱动程序吗?要是没有怎么加?) 
    Exception   in   thread   "main"   java.sql.SQLException:   No   suitable   driver 
    at   java.sql.DriverManager.getConnection(DriverManager.java:545) 
    at   java.sql.DriverManager.getConnection(DriverManager.java:171) 
    at   manager2.ContractCardManager.createDatabase(ContractCardManager.java:145) 
    at   manager2.ContractCardManager.initConnection(ContractCardManager.java:117) 
    at   manager2.ContractCardManager. <init> (ContractCardManager.java:53) 
    at   manager2.ContractCardManager.main(ContractCardManager.java:309) 
      

  3.   

    数据库做为数据持久化存储的重要手段怎么强度都不过分,但传统的数据库都比较庞大,需要安装配置等,对于一些比较轻量级的应用来说有点象杀鸡用牛刀一样.Derby做为一个开源的、纯Java数据库引起了越来越多的关注,它源自IBM的CloudScape,现在成了大名鼎鼎的Apache基金会的开源项目。Apache一项是开源项目的领导者,从他们手里出去的东西都很不错,在此感谢一下这些无私奉献的人们。Derby做为嵌入式数据库的一个方便之处就是对数据库的一切操控都可以在Java程序代码中实现,并且它非常的小,几个jar文件总共才2M多,非常轻巧,非常便于我们程序的移植。下面说一步步的来说明一下怎样使用。首先,从http://db.apache.org/derby/下载Derby的最新版本,直接解压到本地,然后设置程序运行的环境变量。在win2000/xp中“我的电脑”--》右键--》属性--》环境变量--》变量--》添加1.设置JAVA_HOME2.设置DERBY_INSTALL(一定要是这个名字,否则可能无法正常运行),值为解压的目录环境变量设置好了之后,我们就可以着手写第一个测试程序了。和使用其它的数据库一样,首先加载数据库驱动:Class.forName("org.apachy.derby.jdbc.EmbeddedDriver");然后我们创建一个数据库:Connection conn=DriverManager.getConnection("jdbc.derby.derbyDB;create=true","user","pwd");在上面的Url中指定create=true,则创建一个新的数据库。得到连接之后,我们就可以象访问其它数据库一样,进行相关操作了。Statement st=conn.createStatement();st.execute("create table test1(id int,name varchar(20));st.execute("insert into test1 values(1,'sinboy')");st.execute("inert into test1 values(2,'Tom')");ResultSet rs=st.executeQuery("select * from test1");while(rs.next){   System.out.println("id:"+rs.getInt(1)+"  name:"+rs.getString(2));}rs.close();st.close();conn.commit();conn.close();Derby的最大好处应该还是小巧、纯Java、好移植,比较适全小量的数据存储。