JAVA swing界面实现数据库增删改查
java项目中实现增删改查基本流程
Java项目中实现增删改查的基本流程1. 确定需求和设计数据库在开始实现增删改查功能之前,首先需要明确项目的需求,并设计相应的数据库结构。
数据库可以使用关系型数据库如MySQL、Oracle,或者非关系型数据库如MongoDB、Redis等。
2. 创建数据模型根据需求和数据库设计,创建相应的Java数据模型。
数据模型可以使用Java类来表示,类中的属性对应数据库表的字段。
public class User {private Long id;private String name;private int age;// ...// getter and setter methods}3. 创建数据库连接在Java项目中使用数据库之前,需要先创建数据库连接。
可以使用JDBC来连接关系型数据库,或者使用相应的驱动来连接非关系型数据库。
public class DatabaseUtil {private static final String URL = "jdbc:mysql://localhost:3306/mydb";private static final String USERNAME = "root";private static final String PASSWORD = "password";public static Connection getConnection() {try {return DriverManager.getConnection(URL, USERNAME, PASSWORD);} catch (SQLException e) {e.printStackTrace();}return null;}}4. 实现增加数据功能增加数据功能是向数据库中插入新的数据记录。
可以通过执行SQL插入语句来实现。
public class UserDao {public void addUser(User user) {String sql = "INSERT INTO user (name, age) VALUES (?, ?)";try (Connection conn = DatabaseUtil.getConnection();PreparedStatement stmt = conn.prepareStatement(sql)) {stmt.setString(1, user.getName());stmt.setInt(2, user.getAge());stmt.executeUpdate();} catch (SQLException e) {e.printStackTrace();}}}5. 实现删除数据功能删除数据功能是从数据库中删除指定的数据记录。
通过Java代码实现对数据库的数据进行操作:增删改查(JDBC)
通过Java代码实现对数据库的数据进⾏操作:增删改查(JDBC)在写代码之前,依然是引⽤mysql数据库的jar包⽂件:右键项⽬—构建路径—设置构建路径—库—添加外部JAR在数据库中我们已经建⽴好⼀个表xs ;分别有xuehao xingming xuexiao 三个列然后我们开始码代码调⽤,进⾏增删改查⾸先是增加import java.sql.*;public class XueYuan {public static void main(String[] args) throws Exception {Class.forName("com.mysql.jdbc.Driver");//加载驱动String jdbc="jdbc:mysql://127.0.0.1:3306/mydb?characterEncoding=GBK";Connection conn=DriverManager.getConnection(jdbc, "root", "");//链接到数据库Statement state=conn.createStatement(); //容器String sql="insert into xs values('1108','张伟','汉企')"; //SQL语句state.executeUpdate(sql); //将sql语句上传⾄数据库执⾏conn.close();//关闭通道}执⾏后,数据中多了⼀⾏数据删除数据import java.sql.*;public class XueYuan {public static void main(String[] args) throws Exception {Class.forName("com.mysql.jdbc.Driver");//加载驱动String jdbc="jdbc:mysql://127.0.0.1:3306/mydb?characterEncoding=GBK";Connection conn=DriverManager.getConnection(jdbc, "root", "");//链接到数据库Statement state=conn.createStatement(); //容器String sql="delete from xs where xuehao='1108'"; //SQL语句state.executeUpdate(sql); //将sql语句上传⾄数据库执⾏conn.close();//关闭通道}}执⾏后,数据库中xuehao为“1108”的数据的整⾏被删掉修改数据import java.sql.*;public class XueYuan {public static void main(String[] args) throws Exception {Class.forName("com.mysql.jdbc.Driver");//加载驱动String jdbc="jdbc:mysql://127.0.0.1:3306/mydb?characterEncoding=GBK";Connection conn=DriverManager.getConnection(jdbc, "root", "");//链接到数据库Statement state=conn.createStatement(); //容器String sql="update xs set xuexiao='淄博汉企' where xuehao='1101' "; //SQL语句state.executeUpdate(sql); //将sql语句上传⾄数据库执⾏conn.close();//关闭通道}}数据库中的1101对应的xuexiao发⽣了改变⼩结:数据的增删改⼏乎是⼀样的唯⼀不同的是SQL语句不同⽽已查询数据查询数据和增删改不同的地⽅是,我们需要获取,⽽正常获取时,我们获取到的是⼀个字符集import java.sql.*;import javax.xml.stream.events.StartElement;public class Test3 {public static void main(String[] args) throws Exception {//导⼊驱动包Class.forName("com.mysql.jdbc.Driver");//链接⾄数据库String jdbc="jdbc:mysql://127.0.0.1:3306/mydb";Connection conn=DriverManager.getConnection(jdbc, "root", "");Statement state=conn.createStatement();//容器String sql="select * from xs"; //sql语句ResultSet rs=state.executeQuery(sql); //将sql语句传⾄数据库,返回的值为⼀个字符集⽤⼀个变量接收while(rs.next()){ //next()获取⾥⾯的内容System.out.println(rs.getString(1)+" "+rs.getString(2)+" "+rs.getString(3));//getString(n)获取第n列的内容//数据库中的列数是从1开始的}conn.close();}获取的结果例⼦:输⼊账号和密码,在数据库中获取,如果有该信息,则显⽰其登陆成功,如果没有,则显⽰输⼊错误有两种⽅法可以实现:import java.sql.*;import java.util.*;public class Login {public static void main(String[] args) throws Exception {// 输⼊⽤户名和密码Scanner sc=new Scanner(System.in);System.out.println("请输⼊账号");String zh=sc.nextLine();System.out.println("请输⼊密码");String mm=sc.nextLine();// zh=zh.replaceAll("\'", "\""); //替换// mm=mm.replaceAll("\'", "\""); //替换//到数据库验证⽤户名和密码是否正确Class.forName("com.mysql.jdbc.Driver");Connection conn=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/mydb", "root", "");Statement state=conn.createStatement();String sql="select * from yonghu where zhanghao='"+zh+"' and mima='"+mm+"'";ResultSet re=state.executeQuery(sql);//输出:正确显⽰欢迎,不正确显⽰错误if(re.next()){System.out.println("登陆成功!"+re.getString(3)+" 欢迎你");}else{System.out.println("输⼊账号或密码错误");}conn.close();}}实现了该功能但是如果我们输⼊同样会显⽰登陆成功(sql注⼊攻击),为避免出现这种情况我们加⼊两个替换zh=zh.replaceAll("\'", "\"") 将输⼊的所有单引号全部换成双引号,就可以避免这样的漏洞;但是这种⽅法治标不治本,根本原因是字符串的拼接的原因从根本上解决问题还有⼀种写法在SQL语句中,不确定的条件⽤?代替,PreparedStatement(sql)容器来装 setString( n ,m)来赋值n是第⼏个问号的位置,m是赋import java.sql.*;import java.util.*;public class Login {public static void main(String[] args) throws Exception{//输⼊⽤户名和密码Scanner sc=new Scanner(System.in);System.out.println("请输⼊账号");String zh=sc.nextLine();System.out.println("请输⼊密码");String mm=sc.nextLine();Class.forName("com.mysql.jdbc.Driver");String jdbc="jdbc:mysql://127.0.0.1:3306/mydb";Connection conn=DriverManager.getConnection(jdbc, "root", "");String sql="select * from yonghu where zhanghao=? and mima=?"; //sql语句PreparedStatement state=conn.prepareStatement(sql); //容器state.setString(1, zh); //将第n个值替换成某个值state.setString(2, mm);ResultSet re=state.executeQuery(); //上传数据库返回结果集if(re.next()){ //如果取到了值,那么输出System.out.println("登陆成功"+re.getString(3)+",欢迎你");}else{System.out.println("登陆失败,账号或密码输⼊错误");}}。
【良心保姆级教程】java手把手教你用swing写一个学生的增删改查模块
//删除按钮 JButton deleteBtn = new JButton("删除"); deleteBtn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {
这样数据库表,就已经创建好了。数据库表一般对应一个entity实体类,字段互相对应,实体类代码如下:
package com.xiaoniucr.entity;
import java.util.Date;
/** * 学生实体类 * @author Lenovo * */ public class Student {
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '学生ID', `stuno` varchar(32) DEFAULT NULL COMMENT '学号', `name` varchar(32) DEFAULT NULL COMMENT '姓名', `grade` varchar(32) DEFAULT NULL COMMENT '班级', `create_time` datetime DEFAULT NULL COMMENT '添加时间', `update_time` datetime DEFAULT NULL COMMENT '修改时间', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JTextField; import javax.swing.border.EmptyBorder; import javax.swing.table.DefaultTableModel;
JAVA数据库基本操作增删改查
JAVA数据库基本操作增删改查增:一、使用JDBCAPI操作数据库1、创建jdbc对象:为了访问数据库需要创建一个jdbc对象,使用DriverManager类的static方法getConnection(创建jdbc对象。
2、获取Statement对象:通过jdbc.createStatement(方法创建一个Statement对象,使用executeUpdate(方法执行SQL语句。
3、执行sql语句:使用前面创建的Statement对象执行SQL语句,例如,执行INSERT语句则需要使用executeUpdate(方法将要插入的数据插入数据库。
4、关闭jdbc对象:通过jdbc对象的close(方法关闭jdbc对象,以便释放资源,并将数据插入数据库。
二、使用Hibernate框架操作数据库1、创建SessionFactory对象:Hibernate框架使用SessionFactory类来管理数据库的连接,并从数据库中加载实体,进行数据的操作。
SessionFactory对象维护一个连接池,利用它可以创建多个Session对象。
2、创建Session对象:Hibernate框架使用Session类来管理数据,使用SessionFactory对象的openSession(方法可以创建Session对象,并从连接池中获取需要的连接。
3、获取Transaction对象:Session类的beginTransaction(方法可以创建Transaction对象,用于控制数据库的事务。
4、执行SQL语句:使用Session对象的save(方法执行SQL语句,向数据库中插入数据。
6、关闭session:使用Session对象的close(方法关闭session,释放资源。
删:一、使用JDBCAPI操作数据库。
java项目中实现增删改查基本流程
java项目中实现增删改查基本流程Java项目中实现增删改查基本流程引言本文将详细讨论在Java项目中实现增删改查的基本流程。
通过该流程,我们可以在项目中对数据进行操作,包括创建、读取、更新和删除。
步骤一:创建在创建数据之前,首先需要创建数据库和相应的表。
接下来,我们可以通过以下步骤创建具体的数据:1.创建模型类:创建一个Java类来表示数据模型,包含需要的属性和方法。
2.设计数据库表结构:根据模型类的属性,设计数据库表结构,确定每个属性对应的字段。
3.编写DAO(数据访问对象)类:该类用于实现对数据库的访问操作,包括插入数据到数据库中。
4.实例化模型类:在业务逻辑层中,实例化模型类,并设置相应的属性值。
5.调用DAO类的插入方法:在业务逻辑层中,调用DAO类的插入方法,将数据插入到数据库中。
步骤二:读取读取数据是对数据库进行查询操作,获取需要的数据。
下面是读取数据的基本流程:1.编写DAO类的查询方法:在DAO类中编写查询方法,根据需要的条件和属性查询数据。
2.调用DAO类的查询方法:在业务逻辑层中,调用DAO类的查询方法,获取查询结果。
3.处理查询结果:根据返回的结果集,进行数据的处理和展示。
步骤三:更新更新数据是对数据库中已有数据的修改操作。
下面是更新数据的基本流程:1.编写DAO类的更新方法:在DAO类中编写更新方法,根据需要的条件和属性更新数据。
2.实例化模型类并设置属性值:在业务逻辑层中,实例化模型类,并设置需要更新的属性值。
3.调用DAO类的更新方法:在业务逻辑层中,调用DAO类的更新方法,更新数据。
步骤四:删除删除数据是在数据库中删除指定的数据记录。
下面是删除数据的基本流程:1.编写DAO类的删除方法:在DAO类中编写删除方法,根据需要的条件删除数据。
2.调用DAO类的删除方法:在业务逻辑层中,调用DAO类的删除方法,删除数据。
结论在一个Java项目中,实现增删改查的基本流程是创建、读取、更新和删除。
java连接数据库增、删、改、查工具类
java连接数据库增、删、改、查工具类java连接数据库增、删、改、查工具类这篇文章主要介绍了java连接数据库增、删、改、查工具类,需要的朋友可以参考下java连接数据库增、删、改、查工具类数据库操作工具类,因为各厂家数据库的分页条件不同,目前支持Mysql、Oracle、Postgresql的分页查询在Postgresql环境测试过了,其他数据库未测试。
sql语句需要使用预编译形式的复制代码代码如下:packagedb;ng.annotation.ElementType; ng.annotation.Retention; ng.annotation.RetentionPolicy; ng.annotation.Target; ng.reflect.Field; importjava.sql.Connection; importjava.sql.Date;importjava.sql.Driver;importjava.sql.DriverManager; importjava.sql.PreparedStatement; importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Statement; importjava.sql.Time;importjava.sql.Timestamp; importjava.util.ArrayList; importjava.util.List;importjava.util.regex.Matcher; importjava.util.regex.Pattern;importjavax.naming.NamingException; importjavax.sql.DataSource;/数据库查询工具类使用预编译的sql@authorXueLiang/publicclassDBUtil{privatestaticStringdriver;privatestaticDataSourceds=null;privatestaticStringurl="jdbc:postgresql://192.168.56.101/db ";privatestaticStringuser="test";privatestaticStringpassword="12345678";static{try{Class.forName("org.postgresql.Driver");//ds=(DataSource)SpringContextUtil.getBean("dataSource"); }catch(Exceptione){e.printStackTrace();}}/建立连接@returnconConnection@throwsException/privatestaticConnectiongetConnection()throwsException{ Connectionconn=DriverManager.getConnection(url,user,password);//Connectionconn=ds.getConnection();Driverd=DriverManager.getDriver(conn.getMetaData().getU RL());driver=d.getClass().getName();returnconn;}/关闭连接@paramconn@paramstmt@parampreStmt@paramrs@throwsSQLException/privatestaticvoidreplease(Connectionconn,Statementstmt,R esultSetrs)throwsSQLException{if(rs!=null){rs.close();rs=null;}if(stmt!=null){stmt.close();stmt=null;}if(conn!=null){conn.close();conn=null;}/利用正则表达式,获得SELECTSQL中的列名@paramsql@return/ privatestaticListgetColumnsFromSelect(Stringsql){ ListcolNames=newArrayList();//取出sql中列名部分Patternp=pile("(?i)select\\s(.?)\\sfrom."); Matcherm=p.matcher(sql.trim());String[]tempA=null;if(m.matches()){tempA=m.group(1).split(",");}if(tempA==null){returnnull;}Stringp1="(\\w+)";Stringp2="(?:\\w+\\s(\\w+))";Stringp3="(?:\\w+\\sas\\s(\\w+))";Stringp4="(?:\\w+\\.(\\w+))";Stringp5="(?:\\w+\\.\\w+\\s(\\w+))";Stringp6="(?:\\w+\\.\\w+\\sas\\s(\\w+))";Stringp7="(?:.+\\s(\\w+))";Stringp8="(?:.+\\sas\\s(\\w+))";p=pile("(?:"+p1+"||"+p2+"||"+p3+"||"+p4 +"||"+p5+"||"+p6+"||"+p7+"||"+p8+")");for(Stringtemp:tempA){m=p.matcher(temp.trim());if(!m.matches()){continue;}for(inti=1;i<=m.groupCount();i++){if(m.group(i)==null||"".equals(m.group(i))){ continue;}colNames.add(m.group(i));}}returncolNames;}利用正则表达式,获得INSERTSQL中的列名@paramsql@return/privatestaticListgetColumnsFromInsert(Stringsql){ListcolNames=newArrayList();//取出sql中列名部分Patternp=pile("(?i)insert\\s+into.\\((.)\\)\\s+valu es.");Matcherm=p.matcher(sql.trim());String[]tempA=null;if(m.matches()){tempA=m.group(1).split(",");}if(tempA==null){returnnull;}Stringp1="(\\w+)";Stringp2="(?:\\w+\\s(\\w+))";Stringp3="(?:\\w+\\sas\\s(\\w+))";Stringp4="(?:\\w+\\.(\\w+))";Stringp5="(?:\\w+\\.\\w+\\s(\\w+))";Stringp6="(?:\\w+\\.\\w+\\sas\\s(\\w+))";Stringp7="(?:.+\\s(\\w+))";Stringp8="(?:.+\\sas\\s(\\w+))";p=pile("(?:"+p1+"||"+p2+"||"+p3+"||"+p4 +"||"+p5+"||"+p6+"||"+p7+"||"+p8+")");for(Stringtemp:tempA){m=p.matcher(temp.trim());if(!m.matches()){continue;}for(inti=1;i<=m.groupCount();i++){if(m.group(i)==null||"".equals(m.group(i))){continue;}colNames.add(m.group(i));}}returncolNames;}/利用正则表达式,获得UPDATESQL中的列名,包括WHERE字句的@paramsql@return/privatestaticListgetColumnsFromUpdate(Stringsql){ListcolNames=newArrayList();//取出sql中列名部分Patternp=pile("(?i)update(?:.)set(.)(?:from.)where (.(and).)");Matcherm=p.matcher(sql.trim());String[]tempA=null;if(m.matches()){tempA=m.group(1).split(",");if(m.groupCount()>1){String[]tmp=m.group(2).split("and");String[]fina=newString[tempA.length+tmp.length]; System.arraycopy(tempA,0,fina,0,tempA.length); System.arraycopy(tmp,0,fina,tempA.length,tmp.length); tempA=fina;}}if(tempA==null){returnnull;}Stringp1="(?i)(\\w+)(?:\\s\\=\\s.)";Stringp2="(?i)(?:\\w+\\.)(\\w+)(?:\\s\\=\\s.)";p=pile(p1+"||"+p2);for(Stringtemp:tempA){m=p.matcher(temp.trim());if(!m.matches()){continue;}for(inti=1;i<=m.groupCount();i++){if(m.group(i)==null||"".equals(m.group(i))){ continue;}colNames.add(m.group(i));}}returncolNames;}/为sql添加统计代码@return/privatestaticStringaddCountSQL(Stringsql){ StringBuffersb=newStringBuffer();sb.append("selectcount()asdataCountfrom("); sb.append(sql);sb.append(")asa");returnsb.toString();}/为sql添加分页代码@paramstart@paramlimit@return/privatestaticStringaddPagingSQL(Stringsql,intstart,intlimit){ StringBuffersb=newStringBuffer();if("com.microsoft.jdbc.sqlserver.SQLServerDviver".equals(dri ver)){//SQLServer0.72000}elseif("com.microsoft.sqlserver.jdbc.SQLServerDriver".equal s(driver)){//SQLServer20052008}elseif("com.mysql.jdbc.Driver".equals(driver)){//MySQLsb.append(sql);sb.append("LIMIT");sb.append(start);sb.append(",");sb.append(limit);}elseif(".driver.OracleDriver".eq uals(driver)){//Oracle8/8i/9i/10g数据库(thin模式)Listlist=getColumnsFromSelect(sql);sb.append("select");for(Stringstr:list)sb.append(str).append(",");sb.deleteCharAt(stIndexOf(","));sb.append("from(").append(sql).append(")asa");sb.append("whererownumbetween").append(start==0?1:sta rt).append("and").append(limit);}elseif("com.ibm.db2.jdbc.app.DB2Driver".equals(driver)){// DB2}elseif("com.sybase.jdbc.SybDriver".equals(driver)){//Sybase}elseif("rmix.jdbc.IfxDriver".equals(driver)){//Informi x}elseif("org.postgresql.Driver".equals(driver)){//PostgreSQL sb.append(sql);sb.append("LIMIT");sb.append(limit);sb.append("OFFSET");sb.append(start);}returnsb.toString();}/将RusultSet对象实例化T对象@param@paramt@paramrs@paramsql@returnt@throwsException/privatestaticTinstance(Classt,ResultSetrs,Stringsql)throwsExc eption{Listcolumns=getColumnsFromSelect(sql);Tobj=t.newInstance();for(Stringcol:columns){try{Fieldf=t.getDeclaredField(col);f.setAccessible(true);Objectv=getValue(col,f.getType().getName(),rs);f.set(obj,v);}catch(NoSuchFieldExceptione){Field[]fields=t.getDeclaredFields();for(Fieldf:fields){Columncolumn=f.getAnnotation(Column.class); if(column!=null&&().equals(col)){ f.setAccessible(true);Objectv=getValue(col,f.getType().getName(),rs);f.set(obj,v);}}}}returnobj;}privatestaticObjectgetValue(StringcolumnName,Stringtype, ResultSetrs)throwsSQLException{Objectobj=null;//System.out.println("name="+f.getName()+",type="+f.getT ype().getName());if("ng.Integer".equals(type)||"int".equals(type)){obj=rs.getInt(columnName);}elseif("ng.Long".equals(type)||"long".equals(type)){obj=rs.getLong(columnName);}elseif("ng.Short".equals(type)||"short".equals(type)){obj=rs.getShort(columnName);}elseif("ng.Float".equals(type)||"float".equals(type)){obj=rs.getFloat(columnName);}elseif("ng.Double".equals(type)||"double".equals(type )){obj=rs.getDouble(columnName);}elseif("ng.Byte".equals(type)||"byte".equals(type)){obj=rs.getByte(columnName);}elseif("ng.Boolean".equals(type)||"boolean".equals(ty pe)){obj=rs.getBoolean(columnName);}elseif("ng.String".equals(type)){obj=rs.getString(columnName);}else{obj=rs.getObject(columnName);}//System.out.println("name="+f.getName()+",type="+f.getT ype().getName()+",value="+(obj==null?"NULL":obj.getClass())+ ",{"+columnName+":"+obj+"}");returnobj;}/将param中的参数添加到pstate@parampstate@paramcolumns@throwsSQLException/privatestaticvoidsetParameters(PreparedStatementpstate,O bject...params)throwsException{if(params!=null&¶ms.length>0){for(inti=0;iObjectvalue=params[i];intj=i+1;if(value==null)pstate.setString(j,"");if(valueinstanceofString)pstate.setString(j,(String)value); elseif(valueinstanceofBoolean) pstate.setBoolean(j,(Boolean)value); elseif(valueinstanceofDate) pstate.setDate(j,(Date)value); elseif(valueinstanceofDouble) pstate.setDouble(j,(Double)value); elseif(valueinstanceofFloat) pstate.setFloat(j,(Float)value); elseif(valueinstanceofInteger) pstate.setInt(j,(Integer)value); elseif(valueinstanceofLong) pstate.setLong(j,(Long)value); elseif(valueinstanceofShort)pstate.setShort(j,(Short)value);elseif(valueinstanceofTime)pstate.setTime(j,(Time)value);elseif(valueinstanceofTimestamp) pstate.setTimestamp(j,(Timestamp)value); elsepstate.setObject(j,value);}}}/将param中的参数添加到pstate@parampstate@paramcolumns@paramt@throwsSQLException/setParameters(Prepare dStatementpstate,Listcolumns,Tt)throwsException{if(columns!=null&&columns.size()>0){for(inti=0;iStringattr=columns.get(i);Objectvalue=null;Class>c=t.getClass();try{Fieldf=c.getDeclaredField(attr);value=f.get(t);}catch(NoSuchFieldExceptione){Field[]fields=c.getDeclaredFields();for(Fieldf:fields){Columncolumn=f.getAnnotation(Column.class); if(column!=null&&().equals(attr)) value=f.get(t);}}intj=i+1;if(value==null)pstate.setString(j,"");if(valueinstanceofString)pstate.setString(j,(String)value);elseif(valueinstanceofBoolean)pstate.setBoolean(j,(Boolean)value);elseif(valueinstanceofDate)pstate.setDate(j,(Date)value);elseif(valueinstanceofDouble)pstate.setDouble(j,(Double)value);elseif(valueinstanceofFloat)pstate.setFloat(j,(Float)value);elseif(valueinstanceofInteger)pstate.setInt(j,(Integer)value);elseif(valueinstanceofLong)pstate.setLong(j,(Long)value);elseif(valueinstanceofShort)pstate.setShort(j,(Short)value);elseif(valueinstanceofTime)pstate.setTime(j,(Time)value);elseif(valueinstanceofTimestamp) pstate.setTimestamp(j,(Timestamp)value); elsepstate.setObject(j,value);}}}/执行insert操作@paramsql预编译的sql语句@paramtsql中的参数@return执行行数@throwsException/publicstaticintinsert(Stringsql,Tt)throwsException{Connectionconn=null; PreparedStatementpstate=null; intupdateCount=0;try{conn=getConnection();Listcolumns=getColumnsFromInsert(sql); pstate=conn.prepareStatement(sql); setParameters(pstate,columns,t); updateCount=pstate.executeUpdate(); }finally{replease(conn,pstate,null);}returnupdateCount;}/执行insert操作@paramsql预编译的sql语句@paramparam参数@return执行行数@throwsException/publicstaticintinsert(Stringsql,Object...param)throwsExceptio n{Connectionconn=null;PreparedStatementpstate=null;intupdateCount=0;try{conn=getConnection();pstate=conn.prepareStatement(sql);setParameters(pstate,param); updateCount=pstate.executeUpdate(); }finally{replease(conn,pstate,null);}returnupdateCount;}/执行update操作@paramsql预编译的sql语句@paramtsql中的参数@return执行行数@throwsException/publicstaticintupdate(Stringsql,Tt)throwsException{ Connectionconn=null; PreparedStatementpstate=null; intupdateCount=0;try{conn=getConnection();Listcolumns=getColumnsFromUpdate(sql); pstate=conn.prepareStatement(sql); setParameters(pstate,columns,t);updateCount=pstate.executeUpdate();}finally{replease(conn,pstate,null);}returnupdateCount;}执行update操作@paramsql@paramparam参数@return执行行数@throwsException/publicstaticintupdate(Stringsql,Object...param)throwsExcepti on{Connectionconn=null;PreparedStatementpstate=null;intupdateCount=0;try{conn=getConnection();pstate=conn.prepareStatement(sql);setParameters(pstate,param); updateCount=pstate.executeUpdate(); }finally{replease(conn,pstate,null);}returnupdateCount;}/查询复数的对象@paramt查询结果封装的对象类型@paramsql预编译的sql@paramparam查询条件@returnList@throwsException/publicstaticListqueryPlural(Classt,Stringsql,Object...param)th rowsException{Connectionconn=null;PreparedStatementstmt=null;ResultSetrs=null;Listlist=newArrayList();try{conn=getConnection();stmt=conn.prepareStatement(sql);setParameters(stmt,param);rs=stmt.executeQuery();while(rs.next()){list.add(instance(t,rs,sql));}}finally{replease(conn,stmt,rs);}returnlist;}/分页查询复数的对象@paramt查询结果封装的对象类型@paramstart开始页@paramlimit页大小@paramsql预编译的sql语句@paramparam查询参数@throwsException/publicstaticListqueryPluralForPagging(Classt,intstart,intlimit, Stringsql,Object...param)throwsException{Connectionconn=null;PreparedStatementstmt=null;ResultSetrs=null;Listlist=newArrayList();try{conn=getConnection();//添加分页代码sql=addPagingSQL(sql,start,limit);stmt=conn.prepareStatement(sql);setParameters(stmt,param);rs=stmt.executeQuery();while(rs.next()){list.add(instance(t,rs,sql));}}finally{replease(conn,stmt,rs); }returnlist;}/查询单个的对象@paramt查询结果对象@paramsql预编译的sql @paramparam查询参数@returnT@throwsException/publicstaticTquerySingular(Classt,Stringsql,Object...param)th rowsException{Tobj=null;ResultSetrs=null;Connectionconn=null;PreparedStatementpstate=null;try{conn=getConnection();pstate=conn.prepareStatement(sql);setParameters(pstate,param);rs=pstate.executeQuery();if(rs.next()){obj=instance(t,rs,sql);}}finally{replease(conn,pstate,rs); }returnobj;}/查询数据量@paramparam查询参数@paramsql@return@throwsSQLException@throwsNamingException /publicstaticintqueryDataCount(Stringsql,Object...param) throwsException{intdataCount=0;Connectionconn=null; PreparedStatementpstate=null;ResultSetrs=null;try{conn=getConnection();sql=addCountSQL(sql);pstate=conn.prepareStatement(sql); setParameters(pstate,param);rs=pstate.executeQuery();if(rs.next()){dataCount=rs.getInt("dataCount");}}finally{replease(conn,pstate,rs);}returndataCount;}/属性字段的注释,用于标记该属性对应的数据库字段例如:@Column(name="user_name"); StringuserName;表示userName这个属性对应的数据库字段是user_name如果属性和数据库字段完全一致,则不必标注@authorxueliang/@Target({ElementType.FIELD})@Retention(RetentionPolicy.RUNTIME) public@interfaceColumn{ Stringname()default"";}}。
java数据库的增删改查
//数据库的查询数据package com.geminno.www.day1;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.sql.Connection;public class FirstJDBC {//类public static void main(String[] args) {//主方法Connection conn = null;//在这里定义,后面可以直接关闭Statement st = null;ResultSet rs = null;try {//1.加载驱动Class.forName("com.mysql.jdbc.Driver");//这个是固定的//2.建立连接String url = "jdbc:mysql://localhost:3306/day810";//定义数据库位置String user = "root";//定义用户名String password = "root";//定义数据库密码conn = DriverManager.getConnection(url, user, password);//建立连接,千万不能导入错误if(conn != null){System.out.println("连接成功!!");}else{System.out.println("连接失败!!");}//3.创建对象st = conn.createStatement();//创建一个Statement对象String sql = "select * from student";//输入一个sql语句,用来发送到sql服务器//4.发送sql语句rs = st.executeQuery(sql);//发送sql语句并返回一个值//5.处理结果集(输出第一条数据)//由于数据太多,所有这种方法太麻烦了,所有直接加一个循环//因为rs.next()返回是Boolean类型的,所以可以作为标志来//当rs.next()为true时,进行循环,当rs.next()为false时,退出循环。
java swing界面实现数据库增删改查
数据库程序设计大作业班级:2012级软件外包效劳一班**:7:。
时间:2013-6-191.功能描述1.1 功能简介用swing做出图形化界面形式,实现数据库的增删改查把员工表跟部门表连接起来,实现数据的增加,删除,修改,查找。
1.2 实现步骤〔1〕安装好虚拟机,并在其下确认oracle已安装成功〔可以在dos下输入相关命令来检查是否安装成功〕。
〔2〕在网络中心修改pc机上的VMware Network Adapter 的IP、子网页码〔默认〕、网关。
〔3〕修改虚拟机的IP、网掩码〔默认〕、网关,确保PC机上的网关和虚拟机的IP一致。
〔在控制面板——>网络和共享中心——>本地连接3——>属性中,修改IP、网掩码〕〔4〕在PC机的dos命令控制台ping虚拟机的IP,确保正常,能ping通〔即将虚拟机内外ping通〕。
〔5〕配置好虚拟机下的oracle的数据库和监听。
〔6〕在eclipse中编写相关代码,并用jtable实现图形化界面,用以实现与数据库的连接和操作数据库等功能。
〔7〕在eclipse中导入数据库的驱动。
〔8〕运行eclipse,查看运行结果。
2. 核心代码1.数据库连接package org.l*.dbc;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLE*ception;import java.sql.Statement;public class DatabaseConnection {public static void main(String[] args) {Connection conn = null;Statement stmt = null;ResultSet rs = null;try {Class.forName("oracle.jdbc.driver.OracleDriver");String url = "jdbc:oracle:thin:192.168.0.128:1521/WFJ";conn = DriverManager.getConnection(url, "hr", "hr");stmt = conn.createStatement();String sql = "select * from departments";rs = stmt.e*ecuteQuery(sql);while (rs.ne*t()) {System.out.print(rs.getInt("department_id"));System.out.print("\t");System.out.print(rs.getString("department_name"));System.out.print("\t");System.out.print(rs.getInt("manager_id"));System.out.print("\t");System.out.print(rs.getInt("location_id"));System.out.println();}} catch (ClassNotFoundE*ception e) {e.printStackTrace();} catch (SQLE*ception e) {e.printStackTrace();} finally {try {if (rs != null) {rs.close();}if (stmt != null) {stmt.close();}if (conn != null) {conn.close();}} catch (SQLE*ception e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}2.生成get set方法package edu;publicclass Country {private String department_id;private String department_name;private String area;private String population;public String get department_id() {return department_id;}publicvoid set department_id(String department_name) { = department_id;}public String get department_name() {return department_name;}publicvoid set department_name(String department_name) { this.department_name = department_name;}public String get manager_id() {return manager_id;}publicvoid set manager_id(String manager_id) {this.manager_id= manager_id;}public String get location_id() {return location_id;}publicvoid set location_id(String location_id n) {this.location_id = location_id;}}}3实现方法package tu*inghua;import java.awt.Color;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.Serializable;import java.sql.DriverManager;import java.sql.ResultSet;import java.util.ArrayList;import java.util.List;import java*.swing.JButton;import java*.swing.JFrame;import java*.swing.JLabel;import java*.swing.JScrollPane;import java*.swing.JTable;import java*.swing.JTe*tField;import java*.swing.table.DefaultTableModel;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;public class AppStudent e*tends JFrame{private JTe*tField department_idField;private JTe*tField department_nameField;private JTe*tField manager_idField;private JTe*tField location_idField;private JTable table;private DefaultTableModel model;private String[] columns = { "department_id", "department_name", "manager_id", "location_id"};private List data;private Student tmp;public AppStudent() {data = new ArrayList();getContentPane().setLayout(null);JLabel lblemployee = new JLabel("department_id");lblemployee.setBounds(12, 10, 220, 13);getContentPane().add(lblemployee);department_idField = new JTe*tField();department_idField.setBounds(100, 7, 96, 19);getContentPane().add(department_idField);department_idField.setColumns(10);JLabel lblAge = new JLabel("department_name");lblAge.setBounds(252, 10, 220, 13);getContentPane().add(lblAge);department_nameField = new JTe*tField();department_nameField.setBounds(365, 7, 96, 19);getContentPane().add(department_nameField);department_nameField.setColumns(10);JLabel lblStuno = new JLabel("manager_id");lblStuno.setBounds(12, 36, 220, 13);getContentPane().add(lblStuno);manager_idField = new JTe*tField();manager_idField.setColumns(10);manager_idField.setBounds(100, 33, 96, 19);getContentPane().add(manager_idField);JLabel lblClass = new JLabel("location_id");lblClass.setBounds(252, 36, 220, 13);getContentPane().add(lblClass);location_idField = new JTe*tField();location_idField.setColumns(10);location_idField.setBounds(365, 33, 96, 19);getContentPane().add(location_idField);JButton btnAdd = new JButton("增加");btnAdd.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {add();}});btnAdd.setBounds(75, 59, 77, 21);getContentPane().add(btnAdd);JButton btnDel = new JButton("删除");btnDel.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {del();}});btnDel.setBounds(180, 59, 77, 21);getContentPane().add(btnDel);JButton btnUpdate = new JButton("更新");btnUpdate.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {update();}});btnUpdate.setBounds(280, 59, 77, 21);getContentPane().add(btnUpdate);JButton btnFind = new JButton("查找");btnFind.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {find();}});btnFind.setBounds(380, 59, 77, 21);getContentPane().add(btnFind);model = new DefaultTableModel(columns, 0);table = new JTable(model);table.addMouseListener(new MouseAdapter(){public void mouseClicked(MouseEvent e){int row = table.getSelectedRow();department_idField.setTe*t((String) table.getValueAt(row, 0));department_nameField.setTe*t((String) table.getValueAt(row, 2));manager_idField.setTe*t((String) table.getValueAt(row, 3));location_idField.setTe*t((String) table.getValueAt(row, 4));tmp = getInput();}});JScrollPane scrollPane = new JScrollPane(table);scrollPane.setBounds(12, 100, 571, 248);getContentPane().add(scrollPane);setDefaultCloseOperation(E*IT_ON_CLOSE);setLocationRelativeTo(null);setLocation(350,200);setSize(601, 380);setResizable(false);setVisible(true);}private Student getInput() {Student stu = new Student();stu.department_id= department_idField.getTe*t();stu.department_name = department_nameField.getTe*t();stu.manager_id = manager_idField.getTe*t();stu.location_id = location_idField.getTe*t();return stu;}private void add() {data.add(getInput());showTable();}private void del() {for (int i = 0; i < data.size(); i++){if (tmp.equals(data.get(i))){data.remove(i);break;}}showTable();}private void update() {Student stu = getInput();for (int i = 0; i < data.size(); i++){if (tmp.equals(data.get(i))) {data.remove(i);data.add(i, stu);break;}}showTable();}private void find() {removeRows();Student stu = getInput();for (int i = 0; i < data.size(); i++) {Student tmp = (Student) data.get(i);if (tmp.equals(stu)) {model.addRow(tmp.toArray());break;}}}private void showTable() {removeRows();for (int i = 0; i < data.size(); i++){Student stu = (Student) data.get(i);model.addRow(stu.toArray());}}private void removeRows() {while (model.getRowCount() > 0) {model.removeRow(0);}}public static void main(String[] args) {new AppStudent();}}class Studentimplements Serializable {public String department_id;public String department_name;public String manager_id;public String location_id;public boolean equals(Object obj) {return equals((Student) obj);}public boolean equals(Student obj) {boolean isdepartment_id = true;if (obj.department_id != null && !"".equals(obj.department_id)) { isdepartment_id = department_id.equals(obj.department_id);}boolean isdepartment_name = true;if (obj.department_name != null && !"".equals(obj.department_name)) { isdepartment_name = department_name.equals(obj.department_name);}boolean ismanager_id = true;if (obj.manager_id != null && !"".equals(obj.manager_id)) {ismanager_id = manager_id.equals(obj.manager_id);}boolean islocation_id = true;if (obj.location_id != null && !"".equals(obj.location_id)) {islocation_id = location_id.equals(obj.location_id);}return isdepartment_id&& isdepartment_name && ismanager_id && islocation_id;}public String[] toArray() {return new String[] { department_id, department_name, manager_id, location_id};}public void setVisible(boolean b) {// TODO Auto-generated method stub}}3. 实训总结通过这次实训我发现了自己许多的缺点和缺乏,我一定会好好找出缺乏,尽最大可能去改正,不断进步开展。
swing界面与数据库删除操作
Swing界面与数据库删除操作import javax.swing.*;import javax.swing.border.*;import java.awt.*;import java.sql.*;import java.awt.event.*;public class jiemianshanchu extends JFrame implements ActionListener{ JTable table;Object[][] rowData=new Object[5][3];String[] title={"编号","标题","内容"};JLabel l1=new JLabel();JLabel l2=new JLabel();JTextField t0=new JTextField();JButton b1=new JButton();JButton b2=new JButton();public jiemianshanchu(){super("登入窗口");setBounds(200,200,360,310);setLayout(null); //不使用布局l1.setForeground(Color.red);l1.setFont(new Font("",Font.BOLD,18));l1.setText("新闻管理系统");l1.setBounds(39,28,170,36);add(l1);l2.setText("请输入删除编号:");l2.setBounds(38,83,100,15);add(l2);t0.setBounds(140,80,100,21);add(t0);b1.setText("退出");b1.setBounds(141,120,68,23);add(b1);b2.setText("确定");b2.setBounds(67,120,68,23);add(b2);setVisible(true);b2.addActionListener(this);b1.addActionListener(this);}public void actionPerformed(ActionEvent e){if(e.getSource()==b2){try {Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");String strCon = "jdbc:odbc:xinwen"; //连接字符串String strUser = ""; //数据库用户名String strPwd = ""; //口令Connection conn=DriverManager.getConnection(strCon, strUser, strPwd);Statement stat = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);int id=Integer.parseInt(t0.getText());stat.executeUpdate("delete from xinwen where id="+id+"");JOptionPane.showMessageDialog(null,"数据已成功删除!");}catch (Exception ex){}}if(e.getSource()==b1){System.exit(0);}}public static void main(String args[]){jiemianshanchu jiemianshanchu=new jiemianshanchu();}}。
java项目中的增删改查方法
java项目中的增删改查方法在Java项目中,增删改查(CRUD)方法是非常常见和重要的。
这些方法用于对数据库中的数据进行操作,是任何应用程序的核心功能之一。
在本文中,我们将讨论Java项目中的增删改查方法的实现和最佳实践。
1. 增加(Create)数据。
在Java项目中,创建数据通常涉及将用户输入或其他来源的数据插入到数据库中。
为了实现这一点,我们通常会使用SQL INSERT语句或ORM(对象关系映射)框架(如Hibernate)来执行插入操作。
在使用ORM框架的情况下,我们可以通过创建实体对象并将其持久化到数据库中来实现数据的创建操作。
2. 删除(Delete)数据。
删除数据是指从数据库中移除特定记录或数据集。
在Java项目中,我们可以使用SQL DELETE语句或ORM框架提供的方法来执行删除操作。
在使用ORM框架时,通常会调用实体对象的删除方法来删除数据库中的记录。
3. 修改(Update)数据。
修改数据是指更新数据库中现有记录的内容。
在Java项目中,我们可以使用SQL UPDATE语句或ORM框架提供的方法来执行更新操作。
如果使用ORM框架,我们可以通过修改实体对象的属性并将其持久化到数据库中来实现数据的修改操作。
4. 查询(Retrieve)数据。
查询数据是指从数据库中检索特定记录或数据集。
在Java项目中,我们可以使用SQL SELECT语句或ORM框架提供的方法来执行查询操作。
如果使用ORM框架,我们通常会调用相应的查询方法来检索数据库中的数据。
在实现增删改查方法时,我们应该注意以下最佳实践:使用预编译语句或参数化查询来防止SQL注入攻击。
对数据库操作进行事务管理,以确保数据的一致性和完整性。
使用适当的索引和优化数据库查询,以提高性能。
对于ORM框架,应该了解并遵循框架的最佳实践和性能优化建议。
总之,增删改查方法是任何Java项目中不可或缺的部分。
通过遵循最佳实践和使用合适的工具和技术,我们可以有效地实现这些方法并确保应用程序的数据操作功能的稳健性和性能。
Java连接数据库增删改查(精)
Java连接sql2000数据库增删改查功能学院:仲恺农业工程学院姓名:陈伟团专业:计算机科学与技术班级:084班1. 数据库连接package edu;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;public class DBConnection {public static Connection getConnection({Connection conn = null;String driver = "com.microsoft.jdbc.sqlserver.SQLServerDriver"; String url ="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=shop"; String username = "sa";String password = "sa";try {Class.forName(driver;conn = DriverManager.getConnection(url,username,password;} catch (ClassNotFoundException e {e.printStackTrace(;} catch (SQLException e {e.printStackTrace(;}return conn;}2. 生成get set方法package edu;public class Country {private String name;private String region;private String area;private String population;private String gdp;public String getName( {return name;}public void setName(String name { = name;}public String getRegion( {return region;}public void setRegion(String region {this.region = region;}public String getArea( {return area;}public void setArea(String area {this.area = area;}public String getPopulation( {return population;}public void setPopulation(String population { this.population = population;}public String getGdp( {return gdp;}public void setGdp(String gdp {this.gdp = gdp;}}3实现方法package edu;import java.awt.Rectangle;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.List;import javax.swing.JButton;import javax.swing.JComboBox;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTable;import javax.swing.JTextField;import javax.swing.SwingUtilities;public class CountryInfoGui implements ActionListener { private JFrame jFrame;private JPanel jContentPane;private JLabel lblName = null;private JTextField tfName = null;private JLabel lblRegion = null;private JComboBox cbRegion = null;private JLabel lblArea = null;private JTextField tfArea = null;private JLabel lblPopu = null;private JTextField tfPopu = null;private JLabel lblGdp = null;private JTextField tfGDP = null;private JButton btnAdd = null;private JButton btnDel = null;private JButton btnModify = null;private JButton btnQuery = null;private JButton btnUpPage = null;private JButton btnDownPage = null;private JTable table = null;TableModel tm = null;JScrollPane jsp = null;private JTextField getTfName( {if (tfName == null {tfName = new JTextField(;tfName.setBounds(new Rectangle(89, 17, 173, 27;}return tfName;}private JComboBox getCbRegion( {if (cbRegion == null {String[] str = { "请选择", "亚洲", "欧洲", "非洲", "北美洲", "南美洲", "大洋洲","南极洲" };cbRegion = new JComboBox(str;cbRegion.setBounds(new Rectangle(360, 17, 229, 28;}return cbRegion;}private JTextField getTfArea( {if (tfArea == null {tfArea = new JTextField(;tfArea.setBounds(new Rectangle(89, 61, 173, 27; }return tfArea;}private JTextField getTfPopu( {if (tfPopu == null {tfPopu = new JTextField(;tfPopu.setBounds(new Rectangle(360, 61, 229, 28; }return tfPopu;}private JTextField getTfGDP( {if (tfGDP == null {tfGDP = new JTextField(;tfGDP.setBounds(new Rectangle(89, 105, 173, 27; }return tfGDP;}private JButton getBtnAdd( {if (btnAdd == null {btnAdd = new JButton(;btnAdd.setBounds(new Rectangle(46, 152, 71, 30; btnAdd.addActionListener(this;btnAdd.setText("添加";}return btnAdd;}private JButton getBtnUpPage( {if (btnUpPage == null {btnUpPage = new JButton("上一页";btnUpPage.addActionListener(this;btnUpPage.setBounds(200, 390, 80, 30;}return btnUpPage;}private JButton getBtnDownPage( {if (btnDownPage == null {btnDownPage = new JButton("下一页";btnDownPage.addActionListener(this;btnDownPage.setBounds(300, 390, 80, 30;}return btnDownPage;}private JButton getBtnDel( {if (btnDel == null {btnDel = new JButton(;btnDel.setBounds(new Rectangle(189, 152, 71, 30; btnDel.addActionListener(this;btnDel.setText("删除";}return btnDel;}private JButton getBtnModify( {if (btnModify == null {btnModify = new JButton(;btnModify.setBounds(new Rectangle(342, 152, 71, 30; btnModify.addActionListener(this;btnModify.setText("更新";}return btnModify;}private JButton getBtnQuery( {if (btnQuery == null {btnQuery = new JButton(;btnQuery.setBounds(new Rectangle(484, 152, 71, 30; btnQuery.addActionListener(this;btnQuery.setText("查找";}return btnQuery;}public static void main(String[] args {SwingUtilities.invokeLater(new Runnable( {public void run( {CountryInfoGui application = new CountryInfoGui(; application.getJFrame(.setVisible(true;}};}private JFrame getJFrame( {if (jFrame == null {jFrame = new JFrame(;jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE; jFrame.setBounds(new Rectangle(450, 250, 610, 454; jFrame.setContentPane(getJContentPane(;jFrame.setTitle("国家信息管理";}return jFrame;}private JPanel getJContentPane( {if (jContentPane == null {lblGdp = new JLabel(;lblGdp.setBounds(new Rectangle(15, 106, 63, 27; lblGdp.setText("国家GDP";lblPopu = new JLabel(;lblPopu.setBounds(new Rectangle(285, 61, 63, 27; lblPopu.setText("人口数量";lblArea = new JLabel(;lblArea.setBounds(new Rectangle(15, 61, 63, 27; lblArea.setText("国家面积";lblRegion = new JLabel(;lblRegion.setBounds(new Rectangle(285, 17, 63, 27; lblRegion.setText("所属地区";lblName = new JLabel(;lblName.setBounds(new Rectangle(15, 17, 63, 27; lblName.setText("国家名称";jContentPane = new JPanel(;jContentPane.setLayout(null;jContentPane.add(lblName, null;jContentPane.add(getTfName(, null;jContentPane.add(lblRegion, null;jContentPane.add(getCbRegion(, null;jContentPane.add(lblArea, null;jContentPane.add(getTfArea(, null;jContentPane.add(lblPopu, null;jContentPane.add(getTfPopu(, null;jContentPane.add(lblGdp, null;jContentPane.add(getTfGDP(, null;jContentPane.add(getBtnAdd(, null;jContentPane.add(getBtnDel(, null;jContentPane.add(getBtnModify(, null;jContentPane.add(getBtnQuery(, null;jContentPane.add(getBtnUpPage(, null;jContentPane.add(getBtnDownPage(, null;}return jContentPane;}public void actionPerformed(ActionEvent e {if (e.getActionCommand(.equals("查找" {selectAll(;} else if (e.getActionCommand(.equals("下一页" { selectDownPage(;} else if (e.getActionCommand(.equals("上一页" { selectUpPage(;} else if (e.getActionCommand(.equals("添加" {if (tfName.getText(.equals(""|| cbRegion.getSelectedItem(.equals("请选择"|| tfArea.getText(.equals(""|| tfPopu.getText(.equals(""|| tfGDP.getText(.equals("" {JOptionPane.showMessageDialog(jFrame, "请填写相关信息"; }else {Country co = new Country(;co.setName(tfName.getText(;co.setRegion((String cbRegion.getSelectedItem(;co.setArea(tfArea.getText(;co.setPopulation(tfPopu.getText(;co.setGdp(tfGDP.getText(;boolean flag = CountryOperate.add(co;if (flag {JOptionPane.showMessageDialog(jFrame, "添加成功";} else {JOptionPane.showMessageDialog(jFrame, "添加失败";}}} else if (e.getActionCommand(.equals("删除" {if(!tfName.getText(.equals(""{String key = tfName.getText(;boolean flag = CountryOperate.del(key;if (flag {JOptionPane.showMessageDialog(jFrame, "删除成功";} else {JOptionPane.showMessageDialog(jFrame, "删除失败";}}else {JOptionPane.showMessageDialog(jFrame, "请填写一个国家名字"; }} else if (e.getActionCommand(.equals("更新" {if (!tfName.getText(.equals(""&& !cbRegion.getSelectedItem(.equals("请选择"&& !tfArea.getText(.equals(""&& !tfPopu.getText(.equals(""&& !tfGDP.getText(.equals("" {Country cou = new Country(;cou.setName(tfName.getText(;cou.setRegion((String cbRegion.getSelectedItem(;cou.setPopulation(tfPopu.getText(;cou.setArea(tfArea.getText(;cou.setGdp(tfGDP.getText(;boolean flag = CountryOperate.modify(cou;if(flag{JOptionPane.showMessageDialog(jFrame, "更新成功";}else {JOptionPane.showMessageDialog(jFrame, "更新失败";}} else {JOptionPane.showMessageDialog(jFrame, "请填写相应的信息"; }}}public void setValues(Object[][] obj {this.tm.setDatavalues(obj;}public void selectAll( {List list = CountryOperate. queryFirst(;Object[][] datavalues = new Object[list.size(][5];for (int i = 0; i < list.size(; i++ {Country co = list.get(i;datavalues[i][0] = co.getName(;datavalues[i][1] = co.getRegion(;datavalues[i][2] = co.getArea(;datavalues[i][3] = co.getRegion(;datavalues[i][4] = co.getGdp(;}tm = new TableModel(;this.setValues(datavalues;table = new JTable(tm;table.updateUI(;JScrollPane jsp = new JScrollPane(table;jsp.setBounds(0, 200, 600, 182;jContentPane.add(jsp;}public void selectDownPage( {List list = CountryOperate. downPage(;if (list != null {Object[][] datavalues = new Object[list.size(][5];for (int i = 0; i < list.size(; i++ {Country co = list.get(i;datavalues[i][0] = co.getName(;datavalues[i][1] = co.getRegion(;datavalues[i][2] = co.getArea(;datavalues[i][3] = co.getRegion(;datavalues[i][4] = co.getGdp(;}this.setValues(datavalues;table.updateUI(;} else {JOptionPane.showMessageDialog(jFrame, "已经是最后一页"; }}public void selectUpPage( {List list = CountryOperate. upPage(;if (list != null {Object[][] datavalues = new Object[list.size(][5];for (int i = 0; i < list.size(; i++ {Country co = list.get(i;datavalues[i][0] = co.getName(;datavalues[i][1] = co.getRegion(;datavalues[i][2] = co.getArea(;datavalues[i][3] = co.getRegion(;datavalues[i][4] = co.getGdp(;}this.setValues(datavalues;table.updateUI(;} else {JOptionPane.showMessageDialog(jFrame, "已经是第一页";}}}4操作方法package edu;import javax.swing.table.AbstractTableModel;public class TableModel extends AbstractTableModel { public final static String[] columnHeaders = {"国家名称","所属地区","国家面积","人口数量","国家GDP"};private Object[][] datavalues = { {" "," "," "," "," "}};public int getColumnCount( {return datavalues[0].length;}public int getRowCount( {return datavalues.length;}public Object getValueAt(int rowIndex, int columnIndex { return datavalues[rowIndex][columnIndex];}public String getColumnName(int column {return columnHeaders[column];public void setDatavalues(Object[][] datavalues { this.datavalues = datavalues;}}5操作方法package edu;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.util.ArrayList;import java.util.List;public class CountryOperate {static int i = 1;static int x = 0;public static List queryFirst( {String sql = "select top 5 * from bbc order by name"; List list = query(sql;return list;}public static List downPage( {int y = queryCount(;List list = null;int count = 0; // 总页数if (y % 5 == 0 {count = y / 5;} else {count = y / 5 + 1;if (i < count {x = ((++i - 1 * 5;String sql = "select top "+ x+ " * from (select * from bbc where name not in(select top " + x + " name from bbc order by name as A ";list = query(sql;} else if (i >= count {list = null;}return list;}public static int queryCount( {int count = 0;Connection conn = DBConnection.getConnection(;String sql = "select count(* from bbc";Statement stmt = null;ResultSet rs = null;try {stmt = conn.createStatement(;rs = stmt.executeQuery(sql;while (rs.next( {count = rs.getInt(1;}} catch (SQLException e {e.printStackTrace(;} finally {try {if (rs != nullrs.close(;if (stmt != nullstmt.close(;if (conn != nullconn.close(;} catch (SQLException e {e.printStackTrace(;}}return count;}public static List query(String sql { Connection conn = DBConnection.getConnection(; List list = new ArrayList (;Statement stmt = null;ResultSet rs = null;try {stmt = conn.createStatement(;rs = stmt.executeQuery(sql;while (rs.next( {Country cou = new Country(;cou.setName(rs.getString(1;cou.setRegion(rs.getString(2;cou.setArea(rs.getString(3;cou.setPopulation(rs.getString(4;cou.setGdp(rs.getString(5;list.add(cou;}} catch (SQLException e {e.printStackTrace(;} finally {try {if (rs != nullrs.close(;if (stmt != nullstmt.close(;if (conn != nullconn.close(;} catch (SQLException e {e.printStackTrace(;}}return list;}public static List upPage( {List list = null;if (i > 2 {x = ((--i - 1 * 5;String sql = "select top "+ x+ " * from (select * from bbc where name not in(select top " + x + " name from bbc order by name as A ";list = query(sql;} else if (i == 2 {list = queryFirst(;i--;} else if (i < 2 {list = null;}return list;}public static boolean add(Country cou { Connection conn = DBConnection.getConnection(; PreparedStatement pstmt = null;String sql = "insert into bbc values(?,?,?,?,?"; int x = 0;try {pstmt = conn.prepareStatement(sql;pstmt.setString(1, cou.getName(;pstmt.setString(2, cou.getRegion(;pstmt.setString(3, cou.getArea(;pstmt.setString(4, cou.getPopulation(;pstmt.setString(5, cou.getGdp(;x = pstmt.executeUpdate(;} catch (SQLException e {e.printStackTrace(;} finally {try {if (pstmt != nullpstmt.close(;if (conn != null {conn.close(;}} catch (SQLException e {e.printStackTrace(;}}if (x == 1 {return true;} else {return false;}}public static boolean del(String key { Connection conn = DBConnection.getConnection(; PreparedStatement stmt = null;String sql = "delete from bbc where name =?"; int x = 0;try {stmt = conn.prepareStatement(sql;stmt.setString(1, key;x = stmt.executeUpdate(;} catch (SQLException e {e.printStackTrace(;} finally {try {if (stmt != nullstmt.close(;if (conn != nullconn.close(;} catch (SQLException e {e.printStackTrace(;}}if (x == 1 {return true;} else {return false;}}public static boolean modify(Country cou {Connection conn = DBConnection.getConnection(;PreparedStatement pstmt = null;String sql = "update bbc set Region=?,Area=?,Population=?,Gdp=? where name =?";int x = 0;try {pstmt = conn.prepareStatement(sql;pstmt.setString(1, cou.getName(;pstmt.setString(2, cou.getArea(;pstmt.setString(3, cou.getPopulation(;pstmt.setString(4, cou.getGdp(;pstmt.setString(5, cou.getName(;x = pstmt.executeUpdate(;} catch (SQLException e {e.printStackTrace(;}if(x==1{return true;}else {return false;}}}6实现界面效果1.添加功能1. 删除功能3查找功能。
应用JavaSwingGUI界面技术实现的JavaJDBC数据库操作技术的应用实例
应用Java Swing GUI界面技术实现的Java JDBC数据库操作技术的应用实例1.1.1问题设计一个实现对下面的EBook数据库表进行CRUD-----“增(CREATE)、删(DELETE)、改(UPDATE)、查(READER)”操作的J2SE程序。
物理数据库系统不限制,可以为MS SQLServer、MYSQL和Oracle等。
1.1.2本示例的源程序代码1、DesktopApplication程序类的功能说明实现对EBook数据库表进行CRUD-----“增(CREATE)、删(DELETE)、改(UPDATE)、查(READER)功能实现的基础上尝试了应用Java Swing GUI编程技术,理解了事件的监听机制的原理、桌面程序的布局等知识。
2、编程工具为NetBeans IDE3、本示例的数据库为MySql数据库系统4、本示例的源程序代码import .*;import .*;import .*;import .*;class Table extends JFrame implements ActionListener{/*-------------------------------菜单栏的各项元素定义-----------------------*//*下拉菜单*/private JMenuBar menubar;private JMenu menu;private JMenuItem iselect,iinsert,idel,iupdate;/*插入时的输入框*/private JTextField Tebook_id;private JTextField Tebook_name;private JTextField Tebook_kind;private JTextField Tebook_price;/*显示标签*/private JLabel label_title;private JLabel label_id;private JLabel label_name;private JLabel label_kind;private JLabel label_price;private JLabel label_updateid;//ResultSet rs = ("select * from EBook");(ebook_id);("ebook_name",ebook_name);("ebook_kind",ebook_kind);("ebook_price", ebook_price);();();();PreparedStatementExecSQLSelect() ;}catch (SQLException e) {"SQLState:" + ());"Message:" + ());"Vendor:" + ());} catch (ClassNotFoundException e) {}}//监听器处理函数public void actionPerformed(ActionEvent e) {if()==iselect) { //监听到-点击了菜单中的查看选项//执行查询函数();}else if()==iinsert)//监听到-点击了菜单中的插入选项{Insert_Table();}else if()==idel) //监听到-点击了菜单中的删除选项{();}else if()==iupdate) //监听到-点击了菜单中的删除选项{();}else if()==insert_enter) //监听到-点击了添加页面的提交按钮{//执行插入函数if()!=null&&()!=null&& ()!=null) {StatementSQLInsert(),(), ());}}else if()==del_enter){//监听到-点击了删除页面中的删除按钮int ebook_id;//编程时遇到的问题:// int ebook_id=());//解决方法:// decode//public static Integer decode(String nm)// throws NumberFormatException将String 解码为Integer。
基于javaswing增删改查系统总结
基于javaswing增删改查系统总结基于Java Swing的增删改查系统是一个基本的图形用户界面(GUI)应用程序,用于管理数据库中的数据。
这个系统通常包括以下功能:1. 增加(增):允许用户输入新的数据记录,并将其添加到数据库中。
2. 删除(删):允许用户选择一条或多条数据记录,并将其从数据库中删除。
3. 修改(改):允许用户选择一条数据记录,并修改其字段的值。
4. 查询(查):允许用户根据特定条件查询数据库中的数据记录。
基于Java Swing的增删改查系统通常包括以下组件:窗口(JFrame):作为应用程序的主界面,通常包含菜单栏、工具栏、表格等组件。
表格(JTable):用于显示和编辑数据记录。
文本框(JTextField)和下拉框(JComboBox):用于输入和选择数据。
按钮(JButton):用于触发增删改查操作。
数据库连接和操作类:用于连接数据库、执行增删改查操作等。
基于Java Swing的增删改查系统的开发过程通常包括以下步骤:1. 设计界面:使用Java Swing设计应用程序的界面,包括窗口、表格、文本框、下拉框和按钮等组件。
2. 连接数据库:使用Java数据库连接(JDBC)技术连接数据库,并创建数据库操作类。
3. 实现增删改查功能:编写代码实现增删改查功能,包括数据查询、插入、更新和删除等操作。
4. 测试和调试:对应用程序进行测试和调试,确保增删改查功能正常工作。
5. 打包和部署:将应用程序打包成可执行的JAR文件或WAR文件,并进行部署。
总之,基于Java Swing的增删改查系统是一个基本的数据库管理应用程序,具有广泛的应用前景。
通过学习和实践,可以掌握Java Swing和JDBC等技术,为开发更加复杂的应用程序打下基础。
java增删改查对应的方法
java增删改查对应的方法Java是一种非常流行的编程语言,在许多领域都有广泛的应用。
在Java中,增删改查(CRUD)是常见的操作,用于管理数据。
以下是一些基本的Java方法来实现这些操作。
**1. 创建(Create)**在Java中,可以使用`java.util.Map`或`java.util.ArrayList`等数据结构来创建新的数据。
例如,使用`HashMap`创建一个新的字典项:```javaHashMap<String, String> map = new HashMap<>();map.put("key", "value");```对于列表,可以使用`ArrayList`或`LinkedList`等数据结构:```javaArrayList<String> list = new ArrayList<>();list.add("item");```**2. 查询(Retrieve)**查询操作可以通过Java中的基本数据类型和面向对象技术实现。
使用基本数据类型可以访问对象数组或列表中的特定元素:```javaString item = list.get(index); // 查询列表中的特定元素```而面向对象技术可以通过获取对象的属性来实现查询操作:```javaUser user = new User(); // 假设User是自定义对象类型user.setName("John"); // 设置用户名String name = user.getName(); // 查询用户名```**3. 更新(Update)**在Java中,可以使用集合框架提供的集合修改方法来更新数据。
例如,使用`List`的`set(int index, E element)`方法来更新列表中的特定元素:```javalist.set(index, newItem); // 更新列表中的特定元素为newItem ```对于对象,可以使用`setter`方法来更新属性值:```javauser.setName("Jane"); // 更新用户名为"Jane"```**4. 删除(Delete)**在Java中,可以使用集合框架提供的删除方法来删除数据。
用java连接数据库,实现增删改查
package dao.impl;import java.sql.*;import java.util.*;import dao.BaseDao;import dao.StuDao;import entity.Student;public class StuDaoImpl extends BaseDao implements StuDao {public int addStu(Student s) {// TODO Auto-generated method stubint a=0;PreparedStatement ps=null;Connection cn=this.getConn();String sql="insert into app.student(sno,sname,age,sex,sdept) values(?,?,?,?,?)";try {ps=cn.prepareStatement(sql);ps.setString(1,s.getSno());ps.setString(2,s.getSname());ps.setInt(3,s.getAge());ps.setString(4,s.getSex());ps.setString(5,s.getSdept());a=ps.executeUpdate();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return a;}public int delStu(String sn) {int a=0;PreparedStatement ps=null;Connection cn=this.getConn();String sql="delete from app.student where sno=?";try {ps=cn.prepareStatement(sql);ps.setString(1,sn);a=ps.executeUpdate();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return a;}public int updateStu(Student oldS,Student newS){int a=0;PreparedStatement ps=null;Connection cn=this.getConn();String sql="update app.student set sname=?,age=?,sex=?,sdept=? where sno=?";try {ps=cn.prepareStatement(sql);ps.setString(1,newS.getSname());ps.setInt(2,newS.getAge());ps.setString(3,newS.getSex());ps.setString(4,newS.getSdept());ps.setString(5,oldS.getSno());a=ps.executeUpdate();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return a;}public List getAllStu() {// TODO Auto-generated method stubList list=new ArrayList();PreparedStatement ps=null;ResultSet rs=null;Student s=null;Connection cn=this.getConn();// String sql="select sno,sname,age,sex,sdept from app.student";String sql="select sno,sname,age,sex,sdept from app.student";// String sql="select sno,sname,age,sex,sdept from app.student where sex='女'";// String sql="select sno,sname,age,sex,sdept from app.student where sex='男'";try {ps=cn.prepareStatement(sql);rs=ps.executeQuery() ;while(rs.next()){String sno=rs.getString("sno");String sname=rs.getString("sname");int age=rs.getInt("age");String sex=rs.getString("sex");String sdept=rs.getString("sdept");s=new Student(sno,sname,age,sex,sdept);list.add(s);}} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return list;}public Student searchStu(String sn) {// TODO Auto-generated method stubPreparedStatement ps=null;ResultSet rs=null;Student s=null;Connection cn=this.getConn();String sql="select sno,sname,age,sex,sdept from app.student where sno=?";try {ps=cn.prepareStatement(sql);ps.setString(1,sn);rs=ps.executeQuery() ;while(rs.next()){String sno=rs.getString("sno");String sname=rs.getString("sname");int age=rs.getInt("age");String sex=rs.getString("sex");String sdept=rs.getString("sdept");s=new Student(sno,sname,age,sex,sdept);}} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return s;}public static void main(String[] s){StuDao sd=new StuDaoImpl();/////////////////////////插入一个学生记录/////////Scanner in=new Scanner(System.in);System.out.println("请依次输入学生的学号,姓名,年龄,性别,所在系");String sno=in.next();String sname=in.next();int age=in.nextInt();String sex=in.next();String sdept=in.next();Student sss=new Student(sno,sname,age,sex,sdept);if(sd.searchStu(sno)!=null)System.out.println("学号重复");else{if (sd.addStu(sss) > 0)System.out.println("成功插入");elseSystem.out.println("error");}// /////////////删除一个学生///////////////////// if(sd.delStu("www")>0)// System.out.println("suee");// else// System.out.println("eee");/////////////////更新一个学生/////////////////// Student oldStu=sd.searchStu("s2");// if(oldStu!=null)// {// String sname="大炮";// String sex="男";// int age=21;// String sdept="轨道";// Student newS=new Student(oldStu.getSno(),sname,21,sex,sdept);// sd.updateStu(oldStu, newS);// }// else// System.out.println("没有这个学生");////////////////显示所有学生////////////////////List l=sd.getAllStu();for(int i=0;i<l.size();i++){Student s1=(Student) l.get(i);System.out.println(s1.getSno()+s1.getSname()+s1.getSex()+s1.getAge()+s1.getSdept());}}}。
SWing Java图书管理系统源码(增加删除修改,查询)
}
}catch(Exception e3){
e3.printStackTrace();
bg = new JTable(mx);
JScrollPane gdmb = new JScrollPane(bg);
JLabel bq = new JLabel("请输入图书名");
final JTextField wbk = new JTextField(10);
f.add(gdmb);
f.add(mb,"South");
f.setDefaultCloseOperation(f.EXIT_ON_CLOSE);
f.setSize(300, 400);
f.setVisible(true);
}
mx.setDataVector(v3,gettitle());
}
});
JPanel mb1=new JPanel();
@Override
public void actionPerformed(ActionEvent e) {
xg();
}
});
mb.add(an1);mb.add(an2);mb.add(an3);
f.add(mb1,"North");
while(sc!=null&&sc.next())
{ Vector book = new Vector();
book.add(sc.getString("booknum"));
book.add(sc.getString("bookname"));
java 通过界面修改数据
java 通过界面修改数据
在图形界面中,除了显示数据库中的内容,还可以对数据库中的内容进行修改,并且在图形界面中这样的操作非常常见。
下面的实例来介绍一些,修改result数据
在上述代码中,先创建与数据库及数据表进行连接,并通过SQl语句返回数据表的查询结果集。
然后,将第一条记录的三个字段分别赋予不同三个变量。
其次,在创建JTextField对象时,分别将变量值再赋予这些对象。
这样,在界面的标签后面,将显示记录值。
最后,通过修改其中的值,单击【修改】按钮,即可更改数据表中的记录值,如图13-12所示。
图13-12 修改数据内容。
java项目中实现增删改查基本流程
java项目中实现增删改查基本流程
在Java项目中实现增删改查的基本流程如下:
1. 增加(Create):创建一个新的实体对象,并将其存储到数据库中。
- 创建实体对象的类,并进行必要的字段设置。
- 使用数据库连接或ORM框架,将实体对象插入到数据库表中。
2. 删除(Delete):从数据库中删除指定的实体对象。
- 根据需要删除的实体对象的唯一标识(如ID),准备删除操作。
- 使用数据库连接或ORM框架,执行删除操作。
3. 修改(Update):更新数据库中的指定实体对象。
- 获取需要修改的实体对象,并对其进行必要的字段修改。
- 使用数据库连接或ORM框架,执行更新操作。
4. 查询(Retrieve):从数据库中查询实体对象。
- 根据需要查询的条件(如关键字、字段值等),准备查询操作。
- 使用SQL语句或ORM框架提供的查询方法,执行查询操作,并将结果返回。
以上是增删改查的基本流程,在实际项目中可能会有更多复杂的逻辑和操作,例如条件查询、分页查询、排序等,但基本的增删改查流程是不变的。
请根据具体项目的需求和技术栈,选
择合适的数据库处理方式(原生JDBC、JPA、MyBatis等)来实现。
java项目中的增删改查方法
java项目中的增删改查方法在Java项目中,增删改查(CRUD)方法是非常常见且重要的。
无论是开发Web应用程序、移动应用程序还是其他类型的软件,都需要对数据进行增加、删除、修改和查询操作。
在Java中,通常会使用数据库来存储数据,并通过使用SQL语句来执行这些操作。
对于增删改查操作,Java项目通常会使用一些常见的技术和框架,比如JDBC、Hibernate、MyBatis等。
下面将分别介绍这些方法在Java项目中的应用。
1. 增加(Create),在Java项目中,增加数据通常是通过向数据库中插入新的记录来实现的。
开发人员可以使用SQL语句或者使用ORM框架(比如Hibernate或MyBatis)来执行插入操作。
在使用ORM框架的情况下,只需要创建一个实体对象并将其持久化到数据库中即可完成插入操作。
2. 删除(Delete),删除数据是指从数据库中移除记录。
在Java项目中,可以使用SQL语句的DELETE语句来执行删除操作,也可以通过ORM框架提供的方法来删除实体对象。
删除操作通常需要指定一个唯一的标识符来确定要删除的记录。
3. 修改(Update),修改数据是指更新数据库中已有的记录。
在Java项目中,可以使用SQL语句的UPDATE语句来执行更新操作,也可以通过ORM框架提供的方法来更新实体对象。
更新操作通常需要指定要更新的记录以及更新的字段和数值。
4. 查询(Read),查询数据是指从数据库中检索记录。
在Java项目中,可以使用SQL语句的SELECT语句来执行查询操作,也可以通过ORM框架提供的方法来查询实体对象。
查询操作通常需要指定查询条件,并可以返回满足条件的记录集合。
总之,在Java项目中,增删改查方法是非常基础且重要的操作,开发人员需要熟练掌握数据库操作和相应的技术和框架,以便能够高效地进行数据处理。
同时,也需要注意数据操作的安全性和性能,以确保项目的稳定和可靠。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据库程序设计大作业班级:2012级软件外包服务一班学号:201215140117姓名:。
时间:2013-6-191.功能描述1.1 功能简介用swing做出图形化界面形式,实现数据库的增删改查把员工表跟部门表连接起来,实现数据的增加,删除,修改,查找。
1.2 实现步骤(1)安装好虚拟机,并在其下确认oracle已安装成功(可以在dos下输入相关命令来检查是否安装成功)。
(2)在网络中心修改pc机上的VMware Network Adapter的IP、子网页码(默认)、网关。
(3)修改虚拟机的IP、网掩码(默认)、网关,确保PC机上的网关和虚拟机的IP一致。
(在控制面板——>网络和共享中心——>本地连接3——>属性中,修改IP、网掩码)(4)在PC机的dos命令控制台ping虚拟机的IP,确保正常,能ping通(即将虚拟机内外ping通)。
(5)配置好虚拟机下的oracle的数据库和监听。
(6)在eclipse中编写相关代码,并用jtable实现图形化界面,用以实现与数据库的连接和操作数据库等功能。
(7)在eclipse中导入数据库的驱动。
(8)运行eclipse,查看运行结果。
2. 核心代码2.11.数据库连接package .dbc;import java.sql.Connection; import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;public class DatabaseConnection {public static void main(String[] args) {Connection conn = null;Statement stmt = null;ResultSet rs = null;try {Class.forName("oracle.jdbc.driver.OracleDriver");String url = "jdbc:oracle:thin:@192.168.0.128:1521/WFJ";conn = DriverManager.getConnection(url, "hr", "hr");stmt = conn.createStatement();String sql = "select * from departments";rs = stmt.executeQuery(sql);while (rs.next()) {System.out.print(rs.getInt("department_id"));System.out.print("\t");System.out.print(rs.getString("department_name"));System.out.print("\t");System.out.print(rs.getInt("manager_id"));System.out.print("\t");System.out.print(rs.getInt("location_id"));System.out.println();}} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();} finally {try {if (rs != null) {rs.close();}if (stmt != null) {stmt.close();}if (conn != null) {conn.close();}} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}2.生成get set方法package edu;public class Country {private String department_id;private String department_name;private String area;private String population;public String get department_id() {return department_id;}public void set department_id(String department_name) { = department_id;}public String get department_name() {return department_name;}public void set department_name(String department_name) { this.department_name = department_name;}public String get manager_id() {return manager_id;}public void set manager_id(String manager_id) {this.manager_id= manager_id;}public String get location_id() {return location_id;}public void set location_id(String location_id n) {this.location_id = location_id;}}}3实现方法package tuxinghua;import java.awt.Color;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.Serializable;import java.sql.DriverManager;import java.sql.ResultSet;import java.util.ArrayList;import java.util.List;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JScrollPane;import javax.swing.JTable;import javax.swing.JTextField;import javax.swing.table.DefaultTableModel;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;public class AppStudent extends JFrame{private JTextField department_idField;private JTextField department_nameField;private JTextField manager_idField;private JTextField location_idField;private JTable table;private DefaultTableModel model;private String[] columns = { "department_id", "department_name", "manager_id", "location_id"};private List data;private Student tmp;public AppStudent() {data = new ArrayList();getContentPane().setLayout(null);JLabel lblemployee = new JLabel("department_id");lblemployee.setBounds(12, 10, 220, 13);getContentPane().add(lblemployee);department_idField = new JTextField();department_idField.setBounds(100, 7, 96, 19);getContentPane().add(department_idField);department_idField.setColumns(10);JLabel lblAge = new JLabel("department_name");lblAge.setBounds(252, 10, 220, 13);getContentPane().add(lblAge);department_nameField = new JTextField();department_nameField.setBounds(365, 7, 96, 19);getContentPane().add(department_nameField);department_nameField.setColumns(10);JLabel lblStuno = new JLabel("manager_id"); lblStuno.setBounds(12, 36, 220, 13); getContentPane().add(lblStuno);manager_idField = new JTextField();manager_idField.setColumns(10);manager_idField.setBounds(100, 33, 96, 19); getContentPane().add(manager_idField);JLabel lblClass = new JLabel("location_id"); lblClass.setBounds(252, 36, 220, 13); getContentPane().add(lblClass);location_idField = new JTextField();location_idField.setColumns(10);location_idField.setBounds(365, 33, 96, 19); getContentPane().add(location_idField);JButton btnAdd = new JButton("增加");btnAdd.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {add();}});btnAdd.setBounds(75, 59, 77, 21); getContentPane().add(btnAdd);JButton btnDel = new JButton("删除");btnDel.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { del();}});btnDel.setBounds(180, 59, 77, 21); getContentPane().add(btnDel);JButton btnUpdate = new JButton("更新"); btnUpdate.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {update();}});btnUpdate.setBounds(280, 59, 77, 21);getContentPane().add(btnUpdate);JButton btnFind = new JButton("查找");btnFind.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {find();}});btnFind.setBounds(380, 59, 77, 21);getContentPane().add(btnFind);model = new DefaultTableModel(columns, 0);table = new JTable(model);table.addMouseListener(new MouseAdapter(){public void mouseClicked(MouseEvent e){int row = table.getSelectedRow();department_idField.setText((String) table.getValueAt(row, 0));department_nameField.setText((String) table.getValueAt(row, 2));manager_idField.setText((String) table.getValueAt(row, 3));location_idField.setText((String) table.getValueAt(row, 4));tmp = getInput();}});JScrollPane scrollPane = new JScrollPane(table);scrollPane.setBounds(12, 100, 571, 248);getContentPane().add(scrollPane);setDefaultCloseOperation(EXIT_ON_CLOSE);setLocationRelativeTo(null);setLocation(350,200);setSize(601, 380);setResizable(false);setVisible(true);}private Student getInput() {Student stu = new Student();stu.department_id= department_idField.getText();stu.department_name = department_nameField.getText();stu.manager_id = manager_idField.getText();stu.location_id = location_idField.getText();return stu;}private void add() {data.add(getInput());showTable();}private void del() {for (int i = 0; i < data.size(); i++){if (tmp.equals(data.get(i))){data.remove(i);break;}}showTable();}private void update() {Student stu = getInput();for (int i = 0; i < data.size(); i++){if (tmp.equals(data.get(i))) {data.remove(i);data.add(i, stu);break;}}showTable();}private void find() {removeRows();Student stu = getInput();for (int i = 0; i < data.size(); i++) {Student tmp = (Student) data.get(i);if (tmp.equals(stu)) {model.addRow(tmp.toArray());break;}}}private void showTable() {removeRows();for (int i = 0; i < data.size(); i++){Student stu = (Student) data.get(i);model.addRow(stu.toArray());}}private void removeRows() {while (model.getRowCount() > 0) {model.removeRow(0);}}public static void main(String[] args) {new AppStudent();}}class Studentimplements Serializable {public String department_id;public String department_name;public String manager_id;public String location_id;public boolean equals(Object obj) {return equals((Student) obj);}public boolean equals(Student obj) {boolean isdepartment_id = true;if (obj.department_id != null && !"".equals(obj.department_id)) {isdepartment_id = department_id.equals(obj.department_id);}boolean isdepartment_name = true;if (obj.department_name != null && !"".equals(obj.department_name)) { isdepartment_name = department_name.equals(obj.department_name);}boolean ismanager_id = true;if (obj.manager_id != null && !"".equals(obj.manager_id)) {ismanager_id = manager_id.equals(obj.manager_id);}boolean islocation_id = true;if (obj.location_id != null && !"".equals(obj.location_id)) {islocation_id = location_id.equals(obj.location_id);}return isdepartment_id&& isdepartment_name && ismanager_id && islocation_id;}public String[] toArray() {return new String[] { department_id, department_name, manager_id, location_id};}public void setVisible(boolean b) {// TODO Auto-generated method stub}}3. 实训总结通过这次实训我发现了自己许多的缺点和不足,我一定会好好找出不足,尽最大可能去改正,不断进步发展。