JAVA swing界面实现数据库增删改查

合集下载

java项目中实现增删改查基本流程

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)

通过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写一个学生的增删改查模块

【良心保姆级教程】java手把手教你用swing写一个学生的增删改查模块
} }); updateBtn.setBounds(438, 8, 63, 23);
//删除按钮 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数据库基本操作增删改查

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项目中实现增删改查基本流程引言本文将详细讨论在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连接数据库增、删、改、查工具类,需要的朋友可以参考下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&&params.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数据库的增删改查

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界面实现数据库增删改查

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. 实训总结通过这次实训我发现了自己许多的缺点和缺乏,我一定会好好找出缺乏,尽最大可能去改正,不断进步开展。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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. 实训总结通过这次实训我发现了自己许多的缺点和不足,我一定会好好找出不足,尽最大可能去改正,不断进步发展。

相关文档
最新文档