【作业报告】20150407 作业2 结对 四则运算
结对 四则运算
程序开发简介:
【开发环境】:eclipse
【开发人员】:Ives & 杜殷浩
【博客地址】:杜殷浩
【开发时间】:2015-04-09
【版本】:1.0
【功能】:
1.随机获取算式
2.答题结束后能显示用户答对数目
3.答题结束后显示全部题目的答案
4.用户第一次答题输入用户逆臣
5.能够改变界面的皮肤
【分工】:Ives:
界面的设计、改变界面的背景、保存用户昵称,连接数据库assess
杜殷浩:
随机获取算式,检验用户答案正确与否,显示题目答案,
【特点】:
1.连接了access数据库,能够保存并调用用户昵称
2.能够改变界面的皮肤
3.用户答完题弹出窗体提示题目答案与答对数目
【缺陷】:
1.不能处理小数(四舍五入)与分数
2.不能重新做上次的题目
3.没有限制用户答题的时间
4.没有指出用户答错的题目
5.不能选择运算的符号
6.没有带括号的表达式
7.用户不能选择答题数目和设置答题的时间
8.最后没有算出用户得到的分数
9.不能保存用户答题的记录和答题的分数记录
10.答题界面不能更换皮肤
程序具体代码:
1 package com.ives; 2 3 4 import java.awt.*; 5 6 import javax.swing.*; 7 import com.ives.Login; 8 import java.awt.event.ActionListener; 9 import java.awt.event.ActionEvent; 10 import java.sql.Connection; 11 import java.sql.DriverManager; 12 import java.sql.SQLException; 13 import java.sql.Statement; 14 import com.ives.Jisuan; 15 /** 16 * 作者 :Ives 17 * 创建时间:2015年4月5日 下午19::16 18 * 类说明:四则运算小程序 19 */ 20 public class Login { 21 22 private JFrame frame; 23 private JLabel lblNewLabel_1; 24 private JButton button; 25 public static JTextField textField; 26 static JButton btnNewButton; 27 //使用MPanel这个类来创建panel,这样可以创建带背景的面板 28 MPanel panel = new MPanel(this.getClass().getResource("/img/background2.jpg")); 29 public static void main(String[] args) { 30 EventQueue.invokeLater(new Runnable() { 31 public void run() { 32 try { 33 Login window = new Login(); 34 window.frame.setVisible(true); 35 } catch (Exception e) { 36 e.printStackTrace(); 37 } 38 } 39 }); 40 } 41 42 public Login() { 43 initialize(); 44 } 45 46 private void initialize() { 47 frame = new JFrame(); 48 frame.setTitle("\u7528\u6237\u767B\u9646"); 49 frame.setSize(493,333); 50 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 51 frame.getContentPane().setLayout(new BoxLayout(frame.getContentPane(), BoxLayout.PAGE_AXIS)); 52 53 Toolkit kit = Toolkit.getDefaultToolkit(); 54 Dimension screen = kit.getScreenSize();//获取屏幕高宽 55 int x = screen.width; 56 int y = screen.height; 57 int xcenter = (x-493)/2; 58 int ycenter = (y-333)/2; 59 frame.setLocation(xcenter,ycenter);//设置窗体居中 60 61 frame.getContentPane().add(panel); 62 panel.setLayout(null); 63 64 JLabel lblNewLabel = new JLabel(" \u5C0F\u5B66\u751F\u56DB\u5219\u8FD0\u7B97\u7A0B\u5E8F "); 65 lblNewLabel.setBounds(0, 29, 504, 34); 66 panel.add(lblNewLabel); 67 lblNewLabel.setFont(new Font("华文行楷", Font.BOLD, 30)); 68 69 lblNewLabel_1 = new JLabel("\u6635\u79F0 "); 70 lblNewLabel_1.setBounds(95, 121, 68, 28); 71 panel.add(lblNewLabel_1); 72 lblNewLabel_1.setHorizontalAlignment(SwingConstants.RIGHT); 73 lblNewLabel_1.setVerticalAlignment(SwingConstants.TOP); 74 lblNewLabel_1.setFont(new Font("华文行楷", Font.PLAIN, 25)); 75 76 textField = new JTextField(); 77 textField.setBounds(181, 123, 156, 27); 78 panel.add(textField); 79 textField.setFont(new Font("华文行楷", Font.PLAIN, 18)); 80 textField.setColumns(15); 81 82 button = new JButton("\u786E\u5B9A"); 83 button.addActionListener(new buttonActionListener()); 84 button.setBounds(137, 229, 77, 29); 85 panel.add(button); 86 button.setFont(new Font("华文行楷", Font.PLAIN, 18)); 87 88 btnNewButton = new JButton("\u53D6\u6D88"); 89 btnNewButton.addActionListener(new ActionListener() { 90 public void actionPerformed(ActionEvent e) { 91 frame.dispose();//窗体关闭 92 } 93 }); 94 btnNewButton.setBounds(283, 229, 77, 29); 95 panel.add(btnNewButton); 96 btnNewButton.setFont(new Font("华文行楷", Font.PLAIN, 18)); 97 } 98 99 class buttonActionListener implements ActionListener { 100 public void actionPerformed(ActionEvent e) { 101 try { 102 Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//调用jdbc.odbc驱动 103 } catch (ClassNotFoundException e1) { 104 e1.printStackTrace(); 105 } 106 try{ //连接access数据库,Nichen是数据库的名臣 107 String url = "jdbc:odbc:Nichen.mdb"; 108 Connection con=DriverManager.getConnection(url); 109 Statement sql=con.createStatement(); 110 String nichen=textField.getText().trim(); 111 if(textField.getText().equals("")) 112 { //如果用户没有输入昵称,则提示用户 113 JOptionPane.showMessageDialog(null,"请输入昵称","提示!", JOptionPane.YES_NO_OPTION); 114 } 115 else{ 116 //向Nichen表的属性nichen插入数据 117 String s="insert into Nichen(nichen) values('"+textField.getText()+"')"; 118 Jisuan jisuan = new Jisuan(); 119 jisuan.setVisible(true); 120 frame.setVisible(false); 121 con.close(); //断开与数据库的连接 122 } 123 } catch(SQLException g) { 124 System.out.println("E Code"+g.getErrorCode()); //获取sql server的系统错误代号 125 System.out.println("E M"+g.getMessage()); 126 } 127 } 128 } 129 } 130 131 132 package com.ives; 133 134 import javax.swing.JFrame; 135 import javax.swing.JLabel; 136 import java.awt.Font; 137 import javax.swing.JButton; 138 import java.awt.event.ActionListener; 139 import java.awt.event.ActionEvent; 140 import java.awt.event.MouseAdapter; 141 import java.awt.event.MouseEvent; 142 143 import com.dyh.suanshi; 144 145 public class Jisuan extends JFrame{ 146 147 int i = 1;//计数器 148 private JFrame frame; 149 public MPanel panel = new MPanel(this.getClass().getResource("/img/background2.jpg")); 150 151 public static void main(String args[]) { 152 try { 153 Jisuan frame = new Jisuan(); 154 frame.setVisible(true); 155 } catch (Exception e) { 156 e.printStackTrace(); 157 } 158 } 159 160 public Jisuan() { 161 super();//继承父类的构造方法 162 setTitle("\u56DB\u5219\u8FD0\u7B97\u7CFB\u7EDF"); 163 setBounds(100, 100, 550, 550); 164 setAlwaysOnTop(true); 165 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 166 panel.setLayout(null);// 设置面板的布局管理器为null 167 getContentPane().add(panel);// 将面板添加到窗体 168 169 JLabel label = new JLabel("\u56DB\u5219\u8FD0\u7B97\u7CFB\u7EDF"); 170 label.setLocation(166, 10); 171 label.setSize(220, 40); 172 panel.add(label); 173 label.setFont(new Font("华文行楷", Font.PLAIN, 35)); 174 175 176 JButton btnNewButton = new JButton("\u8BBE\u7F6E\u76AE\u80A4"); 177 btnNewButton.setLocation(79, 117); 178 btnNewButton.setSize(122, 45); 179 panel.add(btnNewButton); 180 btnNewButton.setFont(new Font("华文行楷", Font.PLAIN, 20)); 181 182 btnNewButton.addMouseListener(new MouseAdapter()//鼠标监听 183 { 184 185 public void mouseClicked(MouseEvent e) 186 { 187 if(e.getClickCount()==1) 188 { 189 i++; 190 System.out.println("i="+i); 191 } 192 } 193 }); 194 195 btnNewButton.addActionListener(new ActionListener()//按钮监听 196 { 197 public void actionPerformed(ActionEvent e) { 198 199 if(i == 1) 200 panel.mpanel(this.getClass().getResource("/img/backgrouda.jpg")); 201 202 if(i == 2) 203 panel.mpanel(this.getClass().getResource("/img/background2.jpg")); 204 205 if(i ==3) 206 { 207 panel.mpanel(this.getClass().getResource("/img/lvse.jpg")); 208 i = 0; 209 } 210 } 211 }); 212 213 214 215 JButton button_1 = new JButton("\u8BBE\u7F6E\u65F6\u95F4"); 216 button_1.setLocation(340, 117); 217 button_1.setSize(122, 45); 218 panel.add(button_1); 219 button_1.addActionListener(new ActionListener() { 220 public void actionPerformed(ActionEvent e) { 221 } 222 }); 223 button_1.setFont(new Font("华文行楷", Font.PLAIN, 20)); 224 225 JButton btnNewButton_1 = new JButton("\u67E5\u770B\u5206\u6570"); 226 btnNewButton_1.setLocation(340, 214); 227 btnNewButton_1.setSize(122, 45); 228 panel.add(btnNewButton_1); 229 btnNewButton_1.addActionListener(new ActionListener() { 230 public void actionPerformed(ActionEvent e) { 231 } 232 }); 233 btnNewButton_1.setFont(new Font("华文行楷", Font.PLAIN, 20)); 234 235 236 JButton button = new JButton("\u81EA\u4E3B\u547D\u9898"); 237 button.setLocation(79, 214); 238 button.setSize(122, 45); 239 panel.add(button); 240 button.setFont(new Font("华文行楷", Font.PLAIN, 20)); 241 242 JButton btnNewButton_2 = new JButton("\u8FDB\u5165\u7B54\u9898"); 243 btnNewButton_2.setFont(new Font("华文行楷", Font.PLAIN, 25)); 244 btnNewButton_2.setBounds(198, 330, 152, 53); 245 panel.add(btnNewButton_2); 246 247 btnNewButton_2.addActionListener(new ActionListener() { 248 public void actionPerformed(ActionEvent e) { 249 suanshi suanshi=new suanshi(); 250 suanshi.setVisible(true); 251 frame.setDefaultCloseOperation(HIDE_ON_CLOSE); 252 } 253 }); 254 } 255 } 256 257 public class MPanel extends JPanel { 258 259 private ImageIcon imageIcon;// 声明一个图片对象 260 protected MPanel MPanel1; 261 262 public MPanel(URL imgUrl) { 263 super();// 继承父类的构造方法 264 imageIcon = new ImageIcon(imgUrl);// 根据传入的URL创建ImageIcon对象 265 setSize(imageIcon.getIconWidth(), imageIcon.getIconHeight());// 设置面板与图片等大 266 } 267 public void mpanel(URL imgUrl) { 268 //setLayout(new GridBagLayout());// 将布局管理器修改为网格组布局 269 imageIcon = new ImageIcon(imgUrl);// 根据传入的URL创建ImageIcon对象 270 setSize(imageIcon.getIconWidth(), imageIcon.getIconHeight());// 设置面板与图片等大 271 } 272 protected void paintComponent(Graphics g) {// 重写JPanel类的paintComponent()方法 273 super.paintComponent(g);// 调用JPanel类的paintComponent()方法 274 Image image = imageIcon.getImage();// 通过ImageIcon对象获得Image对象 275 g.drawImage(image, 0, 0, null);// 绘制Image对象,即将图片绘制到面板中 276 } 277 }
1 package com.dyh;
2
3 /**
4 * 作者 :杜殷浩
5 * 创建时间:2015年4月5日 下午18:00
6 * 类说明:四则运算小程序
7 */
8 import java.awt.FlowLayout;
9 import java.awt.Font;
10 import java.awt.GridLayout;
11 import java.awt.event.ActionEvent;
12 import java.awt.event.ActionListener;
13
14 import javax.swing.JButton;
15 import javax.swing.JFrame;
16 import javax.swing.JLabel;
17 import javax.swing.JPanel;
18 import javax.swing.JTextField;
19 import javax.swing.BoxLayout;
20 import javax.swing.SwingConstants;
21 import com.ives.MPanel;
22
23 public class suanshi extends JFrame implements ActionListener{
24 JTextField[] kj;
25 JTextField yy;
26 JFrame g;
27 JLabel biaot,timu,kk,k1,jieguo,dd;
28 JButton wq,qd;
29 JPanel p1,p2,p3,p4;
30 int i,tj;
31 String ssss;
32 int []da=new int[5];
33 private JPanel panel;
34 public suanshi()
35 {
36
37 super("小学生四则运算");
38 getContentPane().setLayout(new BoxLayout(getContentPane(), BoxLayout.X_AXIS));
39
40 MPanel panel = new MPanel(this.getClass().getResource("/img/background2.jpg"));
41 getContentPane().add(panel);
42 panel.setLayout(new GridLayout(0, 1, 0, 3));
43
44
45 p1=new JPanel();
46 panel.add(p1);
47 FlowLayout fl1 = new FlowLayout(FlowLayout.CENTER,10,10);
48 p1.setLayout(fl1);
49 biaot=new JLabel("小学生四则运算");
50 biaot.setFont(new Font("楷体", Font.BOLD,20));
51 p1.add(biaot);
52 p1.setOpaque(false);
53
54
55 p2=new JPanel();
56 panel.add(p2);
57 p2.setLayout(new GridLayout(1,0,10,10));
58 timu=new JLabel("\u968F\u673A\u9898\u76EE\uFF1A");
59 k1=new JLabel(" ");
60 k1.setHorizontalAlignment(SwingConstants.CENTER);
61 k1.setFont(new Font("黑体", Font.BOLD, 30));
62 p2.add(timu);
63 p2.add(k1);
64 p2.setOpaque(false);
65
66 p3=new JPanel();
67 panel.add(p3);
68 p3.setLayout(new GridLayout(1,0,10,10));
69 jieguo=new JLabel("输入答案:");
70 p3.add(jieguo);
71 kk=new JLabel(" ");
72 kk.setFont(new Font("黑体", Font.BOLD, 28));
73 kk.setHorizontalAlignment(SwingConstants.CENTER);
74 p3.add(kk);
75 p3.setOpaque(false);
76
77 p4=new JPanel();
78 panel.add(p4);
79
80 p4.setLayout(null);
81 wq=new JButton("获取题目");
82 wq.setLocation(203, 10);
83 wq.setSize(118, 31);
84 qd=new JButton("提交答案");
85 qd.setLocation(350, 10);
86 qd.setSize(118, 31);
87 p4.add(wq);
88 p4.add(qd);
89 p4.setOpaque(false);
90 wq.addActionListener(this);
91 qd.addActionListener(this);
92 kj=new JTextField[10];
93 for (int i= 0;i<5;i++)
94 {
95 kj[i] = new JTextField();
96 p2.add(kj[i]);
97 }
98 for (int i= 5;i<10;i++)
99 {
100 kj[i] = new JTextField();
101 p3.add(kj[i]);
102 }
103 yy=new JTextField(3);
104 setBounds(350,250,640,227);
105 setVisible(true);
106 }
107 public void actionPerformed(ActionEvent e)
108 {
109
110 if(e.getActionCommand().equals("获取题目")) //判断点击的按钮
111 {
112 for(i=0;i<5;i++)
113 {
114 int sz1=(int)(Math.random()*10+1);
115 int sz2=(int)(Math.random()*10+1);
116 int sz=(int)(Math.random()*4);
117 switch(sz)
118 {
119 case 0:
120 ssss=String.valueOf(sz1)+'+'+String.valueOf(sz2); //把式子转为字符
121 da[i]=sz1+sz2;
122 kj[i].setText(ssss);//把生成的式子添加到文本框
123 break;
124 case 1:
125 ssss=String.valueOf(sz1)+'-'+String.valueOf(sz2);
126 da[i]=sz1-sz2;
127 kj[i].setText(ssss);
128 break;
129 case 2:
130 ssss=String.valueOf(sz1)+'*'+String.valueOf(sz2);
131 da[i]=sz1*sz2;
132 kj[i].setText(ssss);
133 break;
134 case 3:
135 ssss=String.valueOf(sz1)+'/'+String.valueOf(sz2);
136 da[i]=sz1/sz2;
137 kj[i].setText(ssss);
138 break;
139 }
140 }
141 }
142 else if(e.getActionCommand().equals("提交答案"))
143 {
144 int a,b=0,c=0;
145 for(a=5;a<10;a++)
146 {
147 int first= Integer.parseInt(kj[a].getText()); //把文本框输入的答案转为整形
148 if (first==da[b]) //判断答案是否正确
149 {
150 c++; //记录答对题目的个数
151 }
152 b++;
153 }
154 g=new JFrame("答案");
155 GridLayout ggg = new GridLayout(6,0,10,10);
156 g.getContentPane().setLayout(ggg);
157 JLabel sm=new JLabel("答对题目数:"+c);
158 JLabel []ct=new JLabel[5];
159 for(a=0;a<5;a++)
160 {
161 ct[a]=new JLabel("第"+(a+1)+"题"+"答案为:"+da[a]);
162 g.getContentPane().add(ct[a]);
163 }
164 g.getContentPane().add(sm);
165 g.setBounds(550,270,180,180);
166 g.setVisible(true);
167 }
168 }
169 public static void main(String[] args) {
170 suanshi frame=new suanshi();
171 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
172 }
173
174 }
程序运行截图:
个人心得:
Ives:
这次做1.0版本的的四则运算着实有难度,我是说对我自己来说。因为java用得真的很少很少。学java的时候又没有认真地听讲,到了用的时候什么都好像没学过一样,特别是swing这一块,不熟悉真的玩不来。不过这些东西,写多了就会很上手了。刚刚做界面的时候不知道用什么布局,因为用什么布局都不能任意拖动组建,不能调节组件的大小。后来有人告诉我说直接写setLayout(null)就可以拖动了,因为那些布局管理器是在不会用,不过这些以后都会慢慢琢磨琢磨的。从开始的不知道怎么写监听器到现在慢慢会写出按钮监听器,鼠标监听器,实在有不少成就感。虽然可能说做界面比较简单,但是说实话,我真的做了很久,也很用心地去做,到运行之后看到一个自己写出来的界面就觉得心情真愉悦。
我觉得写代码真的要命名规范,我结对的同学命名就没有很规范,以至于我看他的代码的时候真的有点吃力,因为变量定义不明显的时候你看到下面又得重新看回前面,缩进也是很重要的,因为这样代码看上去会更加美观,可读性也会好很多。我们应该多看别人的代码,看看别人的风格是怎么样的,看看别人在写这个程序的时候他的思路是怎么样的。世界上没有两块相同的叶子,同样滴,世界上也没有两块完全相同的代码块。因为每个人的思路都不一样,所以写出来的代码也是有区别的。我们多学习一些优秀的代码,真的会学到很多。而且我越来越有感觉:语言真的需要多练!
在写代码之前真的要花一定的时间去思考你要怎么去设计,不然写完之后你可能有些东西要添加进去,谁知道一添加就会出现无数多的BUG,自己又不知道应该怎么解决,然后就是:算了,不添加。或者是 重新写一遍。所以说,一定要思考,设计好要怎么写,这样在以后的调试或者重构的时候会更加的方便。
总结 :
在写的过程中遇到的困难和解决的方法我要在贴出来,到时候自己又遇到这样的困难忘记了怎么解决就可以上来这样找办法了.
1.我在创建构造方法里面声明创建一个面板,然后我在另一个方法里面调用,当时一直搞不清应该怎么样才可以调用,后来虚心求教,同学告诉我说应该定义成全局变量。因为使用一个未声明的变量panel肯定会报错的。如果定义成全局变量,那就不会报错了。后来觉悟了,这么简单的问题为什么当时没想到,一度陷入了沉思。。。哈哈
2.插入图片,这是在是一个难题,我用了好几天才找出来怎么样插入一个背景到面板里面。如果要插入背景图片,其实有两种方法,我用的是第二种。
第一种是利用标签。把一个图片放进标签里面,然后设置标签大小与面板大小一样。代码如下:
1 import javax.swing.ImageIcon; 2 import javax.swing.JFrame; 3 import javax.swing.JLabel; 4 import javax.swing.JPanel; 5 public class MainJFrame extends JFrame { 6 7 public MainJFrame() { 8 //设置标题 9 super("JFram设置背景图片(Cannel_2020)"); 10 //设置大小 11 setSize(500, 400); 12 //设置位置 13 setLocation(200, 50); 14 //背景图片的路径。(相对路径或者绝对路径。本例图片放于"java项目名"的文件下) 15 String path = "background.jpg"; 16 // 背景图片 17 ImageIcon background = new ImageIcon(path); 18 // 把背景图片显示在一个标签里面 19 JLabel label = new JLabel(background); 20 // 把标签的大小位置设置为图片刚好填充整个面板 21 label.setBounds(0, 0, this.getWidth(), this.getHeight()); 22 // 把内容窗格转化为JPanel,否则不能用方法setOpaque()来使内容窗格透明 23 JPanel imagePanel = (JPanel) this.getContentPane(); 24 imagePanel.setOpaque(false); 25 // 把背景图片添加到分层窗格的最底层作为背景 26 this.getLayeredPane().add(label, new Integer(Integer.MIN_VALUE)); 27 //设置可见 28 setVisible(true); 29 //点关闭按钮时退出 30 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 31 } 32 33 public static void main(String[] args) { 34 new MainJFrame(); 35 } 36 }
第二种方法就是重写JPanel类的paintComponent(Graphics g)方法,实现支持绘制背景图片的功能。代码如下
1 public class MPanel extends JPanel { 2 3 private ImageIcon imageIcon;// 声明一个图片对象 4 protected MPanel MPanel1; 5 6 public MPanel(URL imgUrl) { 7 super();// 继承父类的构造方法 8 imageIcon = new ImageIcon(imgUrl);// 根据传入的URL创建ImageIcon对象 9 setSize(imageIcon.getIconWidth(), imageIcon.getIconHeight());// 设置面板与图片等大 10 } 11 public void mpanel(URL imgUrl) { 12 //setLayout(new GridBagLayout());// 将布局管理器修改为网格组布局 13 imageIcon = new ImageIcon(imgUrl);// 根据传入的URL创建ImageIcon对象 14 setSize(imageIcon.getIconWidth(), imageIcon.getIconHeight());// 设置面板与图片等大 15 } 16 protected void paintComponent(Graphics g) {// 重写JPanel类的paintComponent()方法 17 super.paintComponent(g);// 调用JPanel类的paintComponent()方法 18 Image image = imageIcon.getImage();// 通过ImageIcon对象获得Image对象 19 g.drawImage(image, 0, 0, null);// 绘制Image对象,即将图片绘制到面板中 20 } 21 }
当时我看着书本敲完这段代码的时候,我蒙了一会,因为我敲完之后是出现bug的,但是我和书本上的是没差的。后来我直接复制书本上的过来,它没出现bug了,我不信我写错了那部分,不过出现bug是事实,但是确实不知道哪里出错了。虽然复制代码过来了,但是调用这个类也用了半天的时间。我声明创建MPanel panel = new MPanel(“background.jpg”);这样是不成功的。后来才发现了要用this.getClass().getResource("");这个东西来获取图片。
虽然我这样写了,但是还是不行,因为我没有导入图片到img包里面,如,所以这个界面的背景真的弄了很久。
所以,使用MPanel类来创建面板,传递图片的时候一定要使用this.getClass().getResource(""/img/background2.jpg"");然后再向img包里面导入图片。
3.连接数据库的时候也是有些小困难。我连接好数据库之后,打开,按确定竟然没有反应,我打开数据库的表来看,里面也没有任何东西。因为我没有写SQL语句,没有写String s="insert into Nichen(nichen) values('"+textField.getText()+"')";所以才会没反应,这样是粗心和没有熟练SQL语句造成的。
连接数据库有几点要注意的,第一首先要设计好数据库,数据库名称,表名,属性,类型。第二就是连接数据库,
1 class buttonActionListener implements ActionListener { 2 public void actionPerformed(ActionEvent e) { 3 try { 4 Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//调用jdbc.odbc驱动 5 } catch (ClassNotFoundException e1) { 6 e1.printStackTrace(); 7 } 8 try{ //连接access数据库,xxx是数据库的名臣 9 String url = "jdbc:odbc:xxx.mdb"; 10 Connection con=DriverManager.getConnection(url); 11 Statement sql=con.createStatement();
第三就是配置好数据源。控制面板-----管理工具------数据源(0DBC),然后点击 “添加”,选择Microsoft Access Driver(*.mdb,*.accdb),然后选择你的数据库所在的文件夹,重点是写数据源名的时候一定要加上后缀mdb.如果你创建数据库的时候名字是accdb的时候在配置数据源的时候数据源名应该是写成accdb的,因为我是在创建数据库的时候把它的后缀改成mdb的。还有就是也要把那个数据库的表导入到文件里面。
大概就是这么多了。以上全都是个人见解,我不知道我说的是不是都对,如果哪里有错误的,欢迎大家指出。
---------------------------本次报告到此结束,谢谢老师审阅。---------------