第一篇:java编程常见错误
Java常见异常和错误
1、 在某一路径下执行编译好的class文件出错。
异常如下:
E:liwy>java Test98
Exception in thread "main" java.lang.NoClassDefFoundError: Test98
如果出现了以上错误提示,常见问题有如下两种:1 大小写写错了, 2 路径不正确。
2、数组错误,访问不存在的数组,数组超出绑定,代码如下: public class ArrayDemo
{
} public static void main(String args[]){}int array[] = null; //声明数组 array = new int[3]; //为数组开辟空间,大小为3 for(int i=0;i
异常如下:
array[0]=0
array[1]=
1array[2]=
2Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3at ArrayDemo.main(ArrayDemo.java:11)
以上就是数组的索引超出绑定,就是表示数组越界。
3、某个类没有实例化,访问类属性时,出现空指针异常
class Person{
String name ; int age ;// 声明姓名属性 // 声明年龄属性 public void tell(){ // 取得信息
};} System.out.println("姓名:" + name + ",年龄:" + age) ;
public class ClassDemo03{
}; public static void main(String args[]){} Person per = null ; per.name = "张三" ; per.age = 30 ; per.tell() ;// 声明对象 // 为姓名赋值 // 为年龄赋值 //per = new Person() ; // 实例化对象 // 调用方法,打印信息
异常如下:
Exception in thread "main" java.lang.NullPointerException
at ClassDemo03.main(ClassDemo03.java:12)
4、错误的多态,出现异常
class A{
};
class B extends A{
};
public class PolDemo03{
}; public static void main(String asrgs[]){} A a = new A() ;B b = (B)a ;b.fun1() ; b.fun2() ; b.fun3() ;// 实例化了一个父类对象 // 发生了向下转型关系 public void fun1(){} public void fun3(){} System.out.println("B --> public void fun3(){}") ;// 此方法被子类覆写了 System.out.println("B --> public void fun1(){}") ;} public void fun2(){} this.fun1() ;// 调用fun1()方法// 定义类A // 定义fun1()方法 public void fun1(){ System.out.println("A --> public void fun1(){}") ;
异常如下:
Exception in thread "main" java.lang.ClassCastException: A
at PolDemo03.main(PolDemo03.java:20)
5、两个数字相除,被除数为0,出现异常
public class ExceptionDemo01{
}; public static void main(String args[]){} System.out.println("********** 计算开始 ***********") ; int i = 10 ;int j = 0 ;// 定义整型变量// 定义整型变量 int temp = i / j ; // 此处产生了异常 System.out.println("两个数字相除的结果:" + temp) ; System.out.println("********** 计算结束 ***********") ;
异常如下:
********** 计算开始 ***********
Exception in thread "main" java.lang.ArithmeticException: / by zero
at ExceptionDemo01.main(ExceptionDemo01.java:6)
6、两个数字相除,输入两个参数,分别为字母a 和b,出现异常,数字格式化出问题 public class ExceptionDemo04{
}; public static void main(String args[]){} System.out.println("********** 计算开始 ***********") ; int i = 0 ;int j = 0 ;try{} System.out.println("********** 计算结束 ***********") ; String str1 = args[0] ;String str2 = args[1] ;i = Integer.parseInt(str1) ; j = Integer.parseInt(str2) ; // 接收第一个参数 // 接收第二个参数 // 将第一个参数由字符串变为整型 // 将第二个参数由字符串变为整型 // 定义整型变量// 定义整型变量 int temp = i / j ; // 此处产生了异常 System.out.println("两个数字相除的结果:" + temp) ; System.out.println("----------------------------") ; // 捕获算术异常 System.out.println("出现异常了:" + e) ; }catch(ArithmeticException e){
异常如下:
********** 计算开始 ***********
Exception in thread "main" java.lang.NumberFormatException: For input string: "a"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)at java.lang.Integer.parseInt(Integer.java:447)
at java.lang.Integer.parseInt(Integer.java:497)
at ExceptionDemo04.main(ExceptionDemo04.java:9)
6、两个数字相除,输入两个参数,如果两个参数什么也不输入,出现异常,数组超出绑定。 异常如下:
********** 计算开始 ***********
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at ExceptionDemo04.main(ExceptionDemo04.java:7)
7、assert断言的使用,当断言结果不对出现异常。
public class Test
{
} public static void main(String args[]){} int i[] = {1,2,3};// 数组长度为3 assert i.length==0;// 此处断言数组长度为0
异常如下:
D:d代码>java -ea Test
Exception in thread "main" java.lang.AssertionError
at Test.main(Test.java:5)
断言需要在运行时需要加上“-ea”,如上java –ea 类名。
第二篇:Java编程
《Java编程》
计算器
班级:****** 姓名:******
学号: ******* 指导老师:******
实验名称:JAVA计算器
1实验目的: Java编程语言在编程方面的具体应用,以及使用面向对象方法,对小应用程序进行需求分
析、概要设计、详细设计,最后使用Java编程实现的全过程。
2实验意义:
在编程我们使用的java语言,是目前比较流行的编程语言。在当今这个时代,java语言在编程方面的优势使得编程有了更好的选择。Java语言最大的特点是具有跨平台性,使其不受平台不同的影响,得到了广泛的应用。
3 实训性质
本课程是计算机信息管理专业的一门实践性课程,是《Java编程》课程的实践性教学环节。
4 实训目标
⑴综合应用JAVA程序设计的知识解决实际问题。
⑵学会在应用程序的设计过程中,应用面向对象的程序设计方法。 ⑶学会应用JDBC创建数据库应用程序。
⑷学会开发基于Swing的应用程序及多文档应用程序的设计。
5 实训任务
用Java语言开发工具(例如JDK、Jcreator、NetBeans等)制作一个简单的可运行的完整的应用程序或小型系统,并编制出各阶段必要的文档。
将创建一个计算器,可以进行常用的加减乘除算术运算。本实例的知识点有:窗口布局器Gridlayout的应用,对按钮消息的监听和响应。
6实训条件
<软件:>Windows XP,NetBeans IDE 6.
52 7开发背景: Java是由Sun Microsystems公司于1995年5月推出的Java程序设计语言(以下简称Java语言)和Java平台的总称。Java语言是一个支持网络计算的面向对象程序设计语言。Java语言吸收了Smalltalk语言和C++语言的优点,并增加了其它特性,如支持并发程序设计、网络通信、和多媒体数据控制等。
8系统部分分析:
1) Java语言是简单的。Java语言的语法与C语言和C++语言很接近,使得大多数程序员很容易学习和使用Java。另一方面,Java丢弃了C++ 中很少使用的、很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换。
2) Java语言是一个面向对象的。Java语言提供类、接口和继承等原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为implements)。Java语言全面支持动态绑定,而C++ 语言只对虚函数使用动态绑定
3) Java语言是分布式的。Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java.net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、 ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
4) Java语言是健壮的。Java的强类型机制、异常处理、废料的自动收集等是Java程序健壮性的重要保证。对指针的丢弃是Java的明智选择。Java的安全检查机制使得Java更具健壮性。
5) Java语言是安全的。Java通常被用在网络环境中,为此,Java提供了一个安全机制以防恶意代码的攻击。除了Java语言具有的许多安全特性以外,Java对通过网络下载的类具有一个安全防范机制(类ClassLoader),如分配不同的名字空间以防替代本地的同名类、字节代码检查,并提供安全管理机制.
6) Java语言是体系结构中立的。Java程序(后缀为java的文件)在Java平台上被编译为体系结构中立的字节码格式(后缀为class的文件), 然后可以在实现这个Java平台的任何系统中运行。
7) Java语言是可移植的。这种可移植性来源于体系结构中立性,另外,Java还严格规定了各个基本数据类型的长度。Java系统本身也具有很强的可移植性,Java编译器是用Java实现的.
8) Java语言是解释型的。如前所述,Java程序在Java平台上被编译为字节码格式, 然后可以在实现这个Java平台的任何系统中运行。
9) Java是高性能的。与那些解释型的高级脚本语言相比,Java的确是高性能的。事实上,Java的运行速度随着JIT(Just-In-Time)编译器技术的发展越来越接近于C++。
10) Java语言是多线程的。在Java语言中,线程是一种特殊的对象,它必须由Thread类或其子(孙)类来创建。
11) Java语言是动态的。Java语言的设计目标之一是适应于动态变化的环境。
目录
课程设计题目 ……………………………… p1
课程设计简介 ……………………………… p2
课程设计源代码…………………………… p5
课程设计运行结果 ……………………… p15 课程设计心得体会 ………………………
p16
package computerpad; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.*; import java.util.LinkedList; import java.text.NumberFormat; public class ComputerPad extends Frame implements ActionListener {
NumberButton numberButton[];
OperationButton oprationButton[];
Button 小数点按钮,正负号按钮,退格按钮,
求倒数按钮,等号按钮,清零按钮;
Panel panel;
JTextField resultShow;
String 运算符号[]={"+","-","*","/"};
LinkedList 链表;
boolean 是否按下等号=false;
public ComputerPad()
{
super("计算器");
链表=new LinkedList();
numberButton=new NumberButton[10];
for(int i=0;i<=9;i++)
{
numberButton[i]=new NumberButton(i);
numberButton[i].addActionListener(this);
}
oprationButton=new OperationButton[4];
for(int i=0;i<4;i++)
{
oprationButton[i]=new OperationButton(运算符号[i]);
oprationButton[i].addActionListener(this);
}
小数点按钮=new Button(".");
正负号按钮
=new Button("+/-");
等号按钮=new Button("=");
求倒数按钮=new Button("1/x");
退格按钮=new Button("退格");
清零按钮=new Button("C");
清零按钮.setForeground(Color.red);
退格按钮.setForeground(Color.red);
等号按钮.setForeground(Color.red);
求倒数按钮.setForeground(Color.blue);
正负号按钮.setForeground(Color.blue);
小数点按钮.setForeground(Color.blue);
退格按钮.addActionListener(this);
清零按钮.addActionListener(this);
等号按钮.addActionListener(this);
小数点按钮.addActionListener(this);
正负号按钮.addActionListener(this);
求倒数按钮.addActionListener(this);
resultShow=new JTextField(10);
resultShow.setHorizontalAlignment(JTextField.RIGHT);
resultShow.setForeground(Color.blue);
resultShow.setFont(new Font("TimesRoman",Font.PLAIN,14));
resultShow.setBorder(new SoftBevelBorder(BevelBorder.LOWERED));
resultShow.setBackground(Color.white);
resultShow.setEditable(false);
panel=new Panel();
panel.setLayout(new GridLayout(4,5));
panel.add(numberButton[1]);
panel.add(numberButton[2]);
panel.add(numberButton[3]);
panel.add(oprationButton[0]);
panel.add(清零按钮);
panel.add(numberButton[4]);
panel.add(numberButton[5]);
panel.add(numberButton[6]);
panel.add(oprationButton[1]);
panel.add(退格按钮);
panel.add(numberButton[7]);
panel.add(numberButton[8]);
panel.add(numberButton[9]);
panel.add(oprationButton[2]);
panel.add(求倒数按钮);
panel.add(numberButton[0]);
panel.add(正负号按钮);
panel.add(小数点按钮);
panel.add(oprationButton[3]);
panel.add(等号按钮);
add(panel,BorderLayout.CENTER);
add(resultShow,BorderLayout.NORTH);
addWindowListener(new WindowAdapter()
{ public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
setVisible(true);
setBounds(100,50,240,180);
setResizable(false);
validate();
} public void actionPerformed(ActionEvent e)
{
if(e.getSource() instanceof NumberButton)
{
NumberButton b=(NumberButton)e.getSource();
if(链表.size()==0)
{
int number=b.getNumber();
链表.add(""+number);
resultShow.setText(""+number);
是否按下等号=false;
}
else if(链表.size()==1&&是否按下等号==false)
{
int number=b.getNumber();
String num=(String)链表.getFirst();
String s=num.concat(""+number);
链表.set(0,s);
resultShow.setText(s);
}
else if(链表.size()==1&&是否按下等号==true)
{
int number=b.getNumber();
链表.removeFirst();
链表.add(""+number);
是否按下等号=false;
resultShow.setText(""+number);
}
else if(链表.size()==2)
{
int number=b.getNumber();
链表.add(""+number);
resultShow.setText(""+number);
}
else if(链表.size()==3)
{
int number=b.getNumber();
String num=(String)链表.getLast();
String s=num.concat(""+number);
链表.set(2,s);
resultShow.setText(s);
}
}
else if(e.getSource() instanceof OperationButton)
{
OperationButton b=(OperationButton)e.getSource();
if(链表.size()==1)
{
String fuhao=b.get运算符号();
链表.add(fuhao);
}
else if(链表.size()==2)
{
String fuhao=b.get运算符号();
链表.set(1,fuhao);
}
else if(链表.size()==3)
{
String fuhao=b.get运算符号();
String number1=(String)链表.getFirst();
String number2=(String)链表.getLast();
String 运算符号=(String)链表.get(1);
try
{
double n1=Double.parseDouble(number1);
double n2=Double.parseDouble(number2);
double n=0;
if(运算符号.equals("+"))
{
n=n1+n2;
}
else if(运算符号.equals("-"))
{
n=n1-n2;
}
else if(运算符号.equals("*"))
{
n=n1*n2;
}
else if(运算符号.equals("/"))
{
n=n1/n2;
}
链表.clear();
链表.add(""+n);
链表.add(fuhao);
resultShow.setText(""+n);
}
catch(Exception ee)
{
}
}
}
else if(e.getSource()==等号按钮)
{
是否按下等号=true;
if(链表.size()==1||链表.size()==2)
{
String num=(String)链表.getFirst();
resultShow.setText(""+num);
}
else if(链表.size()==3)
{
String number1=(String)链表.getFirst();
String number2=(String)链表.getLast();
String 运算符号=(String)链表.get(1);
try
{
double n1=Double.parseDouble(number1);
double n2=Double.parseDouble(number2);
double n=0;
if(运算符号.equals("+"))
{
n=n1+n2;
}
else if(运算符号.equals("-"))
{
n=n1-n2;
}
else if(运算符号.equals("*"))
{
n=n1*n2;
}
else if(运算符号.equals("/"))
{
n=n1/n2;
}
resultShow.setText(""+n);
链表.set(0,""+n);
链表.removeLast();
链表.removeLast();
}
catch(Exception ee)
{
}
}
}
else if(e.getSource()==小数点按钮)
{
if(链表.size()==0)
{
是否按下等号=false;
}
else if(链表.size()==1)
{
String dot=小数点按钮.getLabel();
String num=(String)链表.getFirst();
String s=null;
if(num.indexOf(dot)==-1)
{
s=num.concat(dot);
链表.set(0,s);
}
else
{
s=num;
}
链表.set(0,s);
resultShow.setText(s);
}
else if(链表.size()==3)
{
String dot=小数点按钮.getLabel();
String num=(String)链表.getLast();
String s=null;
if(num.indexOf(dot)==-1)
{
s=num.concat(dot);
链表.set(2,s);
}
else
{
s=num;
}
resultShow.setText(s);
}
}
else if(e.getSource()==退格按钮)
{
if(链表.size()==1)
{
String num=(String)链表.getFirst();
if(num.length()>=1)
{
num=num.substring(0,num.length()-1);
链表.set(0,num);
resultShow.setText(num);
}
else
{
链表.removeLast();
resultShow.setText("0");
}
}
else if(链表.size()==3)
{
String num=(String)链表.getLast();
if(num.length()>=1)
{ num=num.substring(0,num.length()-1);
链表.set(2,num);
resultShow.setText(num);
}
else
{
链表.removeLast();
resultShow.setText("0");
}
}
}
else if(e.getSource()==正负号按钮)
{
if(链表.size()==1)
{
String number1=(String)链表.getFirst();
try
{
double d=Double.parseDouble(number1);
d=-1*d;
String str=String.valueOf(d);
链表.set(0,str);
resultShow.setText(str);
}
catch(Exception ee)
{
}
}
else if(链表.size()==3)
{
String number2=(String)链表.getLast();
try
{
double d=Double.parseDouble(number2);
d=-1*d;
String str=String.valueOf(d);
链表.set(2,str);
resultShow.setText(str);
}
catch(Exception ee){
}
}
}
else if(e.getSource()==求倒数按钮)
{
if(链表.size()==1||链表.size()==2)
{
String number1=(String)链表.getFirst();
try
{
double d=Double.parseDouble(number1);
d=1.0/d;
String str=String.valueOf(d);
链表.set(0,str);
resultShow.setText(str);
}
catch(Exception ee){
}
}
else if(链表.size()==3)
{
String number2=(String)链表.getLast();
try
{
double d=Double.parseDouble(number2);
d=1.0/d;
String str=String.valueOf(d);
链表.set(0,str);
resultShow.setText(str);
}
catch(Exception ee){
}
}
}
else if(e.getSource()==清零按钮)
{
是否按下等号=false;
resultShow.setText("0");
链表.clear();
}
} public static void main(String args[])
{
new ComputerPad();
}
}
package computerpad; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class NumberButton extends Button {
int number;
public NumberButton(int number)
{
super(""+number);
this.number=number;
setForeground(Color.blue);
}
public int getNumber()
{
return number;
} }
import java.awt.*; import java.awt.event.*; import javax.swing.*; public class OperationButton extends Button {
String 运算符号;
public OperationButton(String s)
{
super(s);
运算符号=s;
setForeground(Color.red);
}
public String get运算符号()
{
return 运算符号;
} } 14
15 Java实训心得:
未接触Java之前,听人说Java这门语言如何的强大和难以入门,但学习之后,给我的感觉却是语言没有所谓的难于不难,关键是自己有没有真正投入去学,有没有花时间去学。Java是一门很好的语言,经过周围人对Java的宣传,我一开始不敢去学习这门语言,因为一门高级语言总是让人想到一开始的学习会很难,但是后来在自己的努力和老师同学的帮助下,我加入了Java学习者的行列。
老师把我们带进了门,那么,以后漫长的深入学习还是要靠自己。经常性的编写一些程序,或则去看懂、研究透别人编写的程序对于我们打好基础是非常有利的。让我们怀着对Java的一腔热情,用自己的刻苦努力去把Java学好。将来,用自己的成绩去回报有恩于我们的社会、家人和朋友。
第三篇:Java编程学习顺序
1. 第一阶段 掌握要点:Java语基础知识。包括异常、IO流、多线程、集合类、数据库。
(切记基础知识一定要时时刻刻巩固)eg:Java编程思想、Java2 核心技术
2. 第二阶段掌握要点:Tomcat,毋庸置疑,Tomcat为学习web服务首选。而应用服务器
目前主要有:jboss , weblogic . websphere. 而Tomcat和jboss是首选。
3. 第三阶段掌握要点:Java网络编程。包括:SocketRMLHTMLJSPJavaBean
Servlet.开发工具:Myeclipsedreamweaver顺序:
1、学习web 知识:htmldreamwavejavascript
2、先学习jsp设计、Javaservlet编程
3、学习jdbc数据库编程
4、学习 ,他和学习ejb可以结合起来《《精通ejb》》学习ejb设计模式和看代码(最重要)《jsp2.0 技术手册》 在jsp上不要花太多时间,在时间放在servlet多一些
4. 第四阶段 掌握要点:流行MVC 架构和Java对象持久化技术。包括struts
SpringHibernate JSF.学习过程:先学Struts,再学习Hibernate,最后学习Spring
第四篇:java软件编程培训
最好的Java软件编程培训
西安雁塔尚学堂计算机学校创办于2009年,是陕西省培养计算机实用性人才的学校,学校以“程序运行人生,快乐魔力学堂”的口号名扬陕西,并且开创了V教学法等软件人才培养的模式先河。学校采用“理论+实践”并行的教学方式,使学生在这两者的结合中掌握一技之长,为社会培养和输送了大量的高级软件人才。
学校坐落于西安软件园交大捷普大厦,环境优美,更与国内外知名软件企业毗邻,人文气息浓厚。学校拥有自己的网站和机房供学生进行软件开发、设计等课程的实践。同时学校也是西安工业大学计算机与工程学院、陕西国际商贸学院、西安财经学院统计学院、陕西科技大学理学院、杨陵职业技术学 院等大学的实习就业项训基地。
开设课程软件编程培训,android高级课程,iphone高级课程
招生对象
1. iPhone培训课程面向希望把握历史性机遇,希望成为iPhone手机软件开发的紧缺人才。
2. 计算机相关专业、大专以及以上学历。
3. 本课程同样适用于希望了解iPhone手机软件开发,为未来业务转型奠定基础的企业技术团队。
免费复训 + 企业进阶课程 + 终身辅导
我们为学员专门开设QQ群、技术博客、微博等,学员到企业之后,如在技术和职业方向遇到任何瓶颈,都可以向导师请教。我们保持对行业和技术的高度敏感,不断优化和丰富课程内容,这些新技术毕业学员都可以免费学习,同时定期举办的技术讲座和活动,也是对学员免费开放的。
第五篇:Java JDBC编程总结
Hibernate、TopLink等OR Mapping操作数据库的技术都是建立JDBC技术之上的,实际来说,他们的性能和JDBC是有很大差距的,但反过来说,如果JDBC用不好,还不如hibernate呢。暂且不说这些孰优孰劣的话了,再次主要是对Java的基础技术做个总结,以加深认识。
一、JDBC的基本原理
JDBC是Java操作数据库的技术规范。他实际上定义了一组标准的操作数据库的接口。为了能让Java操作数据库,必须要有实现了JDBC这些接口的类,不同的数据库厂商为了让Java语言能操作自己的数据库,都提供了对JDBC接口的实现--这些实现了JDBC接口的类打成一个jar包,就是我们平时看到的数据库驱动。由于不同的数据库操作数据的机制不一样,因此JDBC的具体实现也就千差万别,但是你作为java程序员,你只和Java JDBC的接口打交到,才不用理会他们怎么实现的!呵呵,现在知道JDBC驱动是怎么回事了。当然,这些类可
以自己去写--如果你很牛!
二、JDBC编程的步骤
为了说明这个步骤,假设你要通过java程序执行一个sql查询,你需要按照如下的步骤去走:
1、创建指定数据库的URL 这个URL实际上还是统一资源定位器,里面包含了一些连接数据库的信息:数据库类型、端口、驱动类型、连接方式、数据库服务器的ip(或名字)、数据库名(有的是别名)等。其格
式如下:
jdbc:subProtocol:subName://DBserverIP:port/DatabaseName 例如mysql的一个url:jdbc:mysql://192.168.3.143:3306/zfvims
2、加载驱动类到JVM内存区域中
有两种方法:
一种是用Class.forName()方法加载指定的驱动程序。
一种是将驱动程序添加到java.lang.System的属性jdbc.drivers中。
最后说明一点,有时候添加到系统的CLASSPATH环境变量是不行的,原因是在使用JDBC接口
操作数据库前,JVM还没有加载上驱动。 Class.forName("com.mysql.jdbc.Driver")
3、、通过DriverManager类管理驱动、创建数据库连接。
DriverManager类作用于程序员和JDBC驱动程序之间,提供注册管理驱动建立连接细节等方法,它所有成员均为静态的。通过其getConnection方法会创建一个JDBC Connection对象。
Connection conn=DriverManager.registerDriver("jdbc:mysql://192.168.3.143:3306/zfvims","lava
soft","password");
4、Connection类--数据库连接
这里所说的Connection类实际上是实现了JDBC的Connection接口的类,这个类一般都是jdbc驱动程序实现了。Connection类表示了数据库连接,通过其对象可以获取一个获取数据库和表等数据库对象的详细信息。但更多的是通过这个连接更进一步去向数据库发送SQL语
句去执行,下面会讲到。
数据库的连接的建立是很耗费资源和时间的,因此在不用连接的情况下要通过其close()方
法将连接关闭,以释放系统资源。
5、Statement类--发送并执行(静态)SQL语句
通过Connection对象的createStatement()方法可以创建一个Statement对象,通过该对象的方法可以(发送)并执行一个静态sql语句。如果要执行动态的sql(sql串中有参数),那么就用PreparedStatement类,用法和Statement类似。
Statement stmt=con.createStatement()
6、ResultSet类--结果集
当你执行一条sql查询后,就会产生一个查询结果。ResultSet就表示数据库结果集的数据表,通常通过执行查询数据库的语句生成。ResultSet 对象具有指向其当前数据行的指针。通过ResultSet对象不但可以结果集数据,还可以获取结果集表的列名、数据类型等信息。
ResultSet rs=stmt.executeQuery(sql)
7、关闭数据库连接
当对sql操作完成后,应该关闭数据库连接,这样避免因为连接未关闭而耗费系统资源,如果每次都不关闭,多次操作将建立多个连接,最终数据库连接会达到最大限度,或者耗尽系统的资源,从而导致应用崩溃。因此要注意关闭资源,尤其是数据库连接。
三、JDBC编程最基本的实例
下面通过一个执行一条简单的MySQL查询来说名上面的JDBC编程的一般方法和步骤。
public
class TestJDBC(){
1.public
static Connection getConnectionByJDBC() { Connection conn =
null; 2.
try { //装载驱动类
3. Class.forName("com.mysql.jdbc.Driver"); } catch
(ClassNotFoundException e) { 4. System.out.println("装载驱动异
常!"); e.printStackTrace();
5. }
try { 6.
//建立JDBC连接
conn = DriverManager.getConnection(""jdbc:mysql://192.168.3.143:3306/zfvims
","lavasoft","password");
7. } catch (SQLException e) { System.out.println("
链接数据库异常!"); 8. e.printStackTrace(); }
9.
return conn; }
10.
public
static String test() { 11. String sqlx = "select t.code,t.name from province t order by
t.code asc";
try { 12.
//创建一个JDBC声明
Statement stmt = conn.createStatement(ResultSet.TYPE_FORWARD_ONLY,
ResultSet.CONCUR_READ_ONLY);
13.
//执行查询
ResultSet = stmt.executeQuery(sqlx);
14.
while (rs.next()) { String code =
rs.getString("code");
15. String name = rs.getString("name"); System.out.println(code+name)
; 16. } } catch (SQLException e) { 17. System.out.println(e.getMessage()); e.print
StackTrace();
18. } finally { //预防性关闭连接(避免异常发生时在try语句块关闭连接没有执行)
19.
try {
if (conn != null) conn.close(); 20. } catch (SQLException e) { System.out.println(e.getMessage()); 21. e.printStackTrace(); }
22. } }
23.
public static
void main(String args[]) { new TestJDBC().test();
24. }
25. }
四、JDBC编程的陷阱
1、conn一定要在finally语句块进行关闭。
2、Statement、ResultSet尽可能缩小其变量作用域。
3、Statement可以使用多次,定义多个。一个Statement对象只和一个ResultSet对象关联,
并且是最后一次查询。
4、ResultSet在Connection、ResultSet关闭后自动关闭。
还有很多需要写的,以后再慢慢总结。
【java编程常见错误】相关文章:
java常见错误查询09-21
java编程语言语句09-21
JAVA编程语言软件开发论文04-30
面向对象编程技能在Java教学中的培养12-02
java常见名词解释06-16
常见错误信息09-20
常见错误信息范文05-24
常见错误示例范文05-24