利用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)因为读数据库连接实在是不太知道,百度上说的不太明白程序代码在附件中
可是有错我不知道是什么原因,(是没有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)因为读数据库连接实在是不太知道,百度上说的不太明白程序代码在附件中
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);
}
}
利用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)