Java简单数据库操作

本示例实现Java插入和查询数据。

1. 建立与数据库连接类DbTool(本实例是Java与SQL Server 2008),代码如下:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public  class DbTool {
    private static Connection conn=null;    //创建Connection对象
    public static Connection getConn() {
        try {
            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");    //加载SQL Server数据库驱动
        } catch(ClassNotFoundException e) {
            e.printStackTrace();
        }
        //指定连接数据库的URL
        String url="jdbc:sqlserver://localhost:1433;databaseName=SRM";
        String user="sa";                //指定连接数据库的用户名
        String passWord="1111";            //指定连接数据库的密码
        try {
            conn=DriverManager.getConnection(url,user,passWord);
            if(conn!=null) {                //如果Connection实例不为空
                //System.out.println("数据库连接成功");  //提示信息
            }

            /*
             //加载MySQL数据库的连接
             Class.forName("com.mysql.jdbc.Driver"); //加载MySQL数据库驱动
             String url="jdbc:mysql://localhost:3306/SRM";
             String user="sa";
             String passWord="1111";
             conn=DriverManager.getConnection(url,user,passWord);
             if(conn!=null){

             }

             //加载Oracle数据库的连接
             Class.forName("oracle.jdbc.driver.OracleDriver");// 加载Oracle驱动程序
             String url = "jdbc:oracle:" + "thin:@127.0.0.1:1521:SRM";// 127.0.0.1是本机地址,SRM是精简版Oracle的默认数据库名
             String user = "sa";// 用户名
             String password = "1111";// 你安装时选设置的密码
             conn = DriverManager.getConnection(url, user, password);// 获取连接
             */
        } catch(SQLException e) {
            e.printStackTrace();
        }
        return conn;
    }
}

2. 创建数据操作类,代码如下:

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;
import java.util.Vector;

public class DbOperation {
    private static  DbOperation instance = null;
    public static DbOperation getInstance() { //返回DbOperation类实例的静态方法,单例模式!!!!
        if (instance == null) {
            instance = new DbOperation();
        }
        return instance;
    }
    public boolean addTbNews(TbNews tns) {  //添加数据方法
        Connection conn=null;
        boolean result=false;
        try {
            conn=DbTool.getConn();    //建立与数据库的连接
            String sqlInsert="INSERT INTO tbNews(topicId,contentTxt)VALUES(?,?)";
            PreparedStatement stm=conn.prepareStatement(sqlInsert);
            stm.setString(1, tns.getTopicId());
            stm.setString(2, tns.getContentTxt());
            int i=stm.executeUpdate();
            if (i==1) {
                result=true;
            }
        }catch(SQLException e) {
            e.printStackTrace();
        }finally {
            try {
                conn.close();
            }catch (SQLException e) {
                e.printStackTrace();
            }
        }
        return result;
    }

    public Vector<TbNews> queryTbNews(){     //返回Vector类型方式查询数据
        Vector<TbNews> list =new Vector<TbNews>();
        Connection conn=null;
        try {
            conn=DbTool.getConn();
            Statement stmt=conn.createStatement();
            String querySql="select * from TbNews";
            ResultSet rs=stmt.executeQuery(querySql);
            while(rs.next()) {
                TbNews tbs=new TbNews();
                tbs.setTopicId(rs.getString(1));
                tbs.setContentTxt(rs.getString(2));
                list.add(tbs);
            }
        } catch(Exception e) {
            e.printStackTrace();
        } finally {
            try {
                conn.close();
            } catch(SQLException e) {
                e.printStackTrace();
            }
        }
        return list;
    }

    public List<String> selectTbNews(){        //查询数据方法
        List<String> tbsList=new ArrayList<String>();
        Connection conn=null;
        try {
            conn=DbTool.getConn();
            Statement stmt=conn.createStatement();
            String selectSql="select * from TbNews";
            ResultSet rs=stmt.executeQuery(selectSql);    //执行SQL并返回结果集
            while(rs.next()) {
                String tbs=rs.getString("topicId")+","+rs.getString("contentTxt");
                tbsList.add(tbs);
            }
        } catch(Exception e) {
            e.printStackTrace();
        } finally {
            try {
                conn.close();        //关闭连接
            }catch(SQLException e) {
                e.printStackTrace();
            }
        }
        return tbsList;
    }
}

3. 创建实体类,代码如下:

public class TbNews {
    private String topicId;
    private String contentTxt;
    public String getTopicId() {
        return topicId;
    }
    public void setTopicId(String topicId) {
        this.topicId=topicId;
    }
    public String getContentTxt() {
        return contentTxt;
    }
    public void setContentTxt(String contentTxt) {
        this.contentTxt=contentTxt;
    }
}

4. 创建主窗体(添加记录窗体),代码如下:

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class BoxLayoutFrame extends JFrame {
    private JTextField textField;
    private JTextArea textArea;
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        BoxLayoutFrame frame=new BoxLayoutFrame();
        frame.setVisible(true);    

    }
    public BoxLayoutFrame() {
        super();
        setTitle("箱式布局管理界面");
        setBounds(360,260,360,320);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        Container cp=getContentPane();
        Box topicBox=Box.createHorizontalBox();    //创建一个水平箱容器
        cp.add(topicBox, BorderLayout.NORTH);    //添加到窗体中的最北部
        topicBox.add(Box.createHorizontalStrut(5));    //添加一个5像素的水平支柱
        JLabel topicLabel=new JLabel("主题:");    //创建标签topicLabel
        topicBox.add(topicLabel);                //添加到水平箱容器中
        topicBox.add(Box.createHorizontalStrut(5));    //添加一个5像素的水平支柱
        textField=new JTextField(80);            //创建文本框
        topicBox.add(textField);                //添加到水平容器中
        Box box=Box.createVerticalBox();        //创建一个垂直箱容器
        cp.add(box, BorderLayout.CENTER);        //添加到窗体中
        box.add(Box.createVerticalStrut(5));    //添加一个5像素的垂直支柱
        Box contentBox=Box.createHorizontalBox();    //创建一个水平箱容器
        contentBox.setAlignmentX(1);            //设置组件的水平调整值,靠右对齐
        box.add(contentBox);                    //添加到垂直容器中
        contentBox.add(Box.createHorizontalStrut(5));    //添加一个5像素的水平支柱
        JLabel contentLabel=new JLabel("内容:");    //定义标签contentLabel
        contentLabel.setAlignmentY(0);            //设置组件的垂直调整值,靠上方对齐
        contentBox.add(contentLabel);            //添加到水平箱容器中
        contentBox.add(Box.createHorizontalStrut(5));    //添加一个5像素
        JScrollPane scrollPane=new JScrollPane();    //创建滚动面板
        scrollPane.setAlignmentY(0);            //设置组件的垂直调整值,向上对齐
        contentBox.add(scrollPane);                //将滚动面板添加到contentBox中
        textArea=new JTextArea();                //创建文本框textArea
        textArea.setLineWrap(true);                //允许自动换行
        scrollPane.setViewportView(textArea);    //文本框添加到滚动面板scrollPane
        box.add(Box.createVerticalStrut(5));    //添加一个5像素高的垂直支柱

        Box bottomBox=Box.createHorizontalBox();
        bottomBox.setAlignmentX(1);
        box.add(bottomBox,BorderLayout.SOUTH);
        JButton viewButton=new JButton("浏览记录");
        bottomBox.add(viewButton);
        viewButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                SelectFrame sframe=new SelectFrame(BoxLayoutFrame.this);
                sframe.setVisible(true);
            }
        });

        JButton button=new JButton("确定");        //创建一个按钮button
        button.setAlignmentX(1);                //设置组件的水平调整值,靠右对齐
        //box.add(button);                        //按钮添加到垂直箱容器
        bottomBox.add(button);

        button.addActionListener(new ActionListener() {
            public void actionPerformed(final ActionEvent arg1) {
                //System.exit(0);
                if(textField.getText().length()==0) {//如果文本框无输入信息则不作任何处理

                }
                if(!textField.getText().equals("")) {
                TbNews tbs=new TbNews();
                tbs.setTopicId(textField.getText());
                tbs.setContentTxt(textArea.getText());
                boolean res =DbOperation.getInstance().addTbNews(tbs);
                if (res==true) {
                    textField.setText(null);
                    textArea.setText(null);
                }  }
            }
        });
    }

}

5. 创建浏览记录窗体,代码如下:

import java.awt.BorderLayout;
import java.awt.Container;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.List;
import java.util.Vector;

import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

public class SelectFrame extends JDialog {
    Thread t;
    private JTable table;
    private DefaultTableModel tableModel;
    public SelectFrame(BoxLayoutFrame frame) {
        super(frame,"浏览记录",true);
        setBounds(380,300,300,260);
        Container cp=getContentPane();

        String[] columns= {"topicId","contentTxt"};
        tableModel=new DefaultTableModel(columns,0);
        List<String> tbs=DbOperation.getInstance().selectTbNews();
        for(String info:tbs) {
            String[] args=info.split(",");
            tableModel.addRow(args);
        }
        table=new JTable();
        table.setModel(tableModel);

        final JScrollPane scrollPane=new JScrollPane();
        cp.add(scrollPane, BorderLayout.CENTER);
        scrollPane.setViewportView(table);
    }
}

执行添加结果如下:

执行浏览记录结果如下图所示:

时间: 2024-08-30 01:50:20

Java简单数据库操作的相关文章

ado.net的简单数据库操作(一)

摘要:接下来的几篇博客将要讲到如何使用ado.net实现简单的数据库操作,包括增删改等内容.首先会介绍基础的数据库操作,然后以一个实例来进行讲解,这个实例会把一个数据表读取到winform上,然后在winform上有一些按钮和文本框,通过这些实现对数据库里的内容的增删改的操作.我个人比较菜,因此记录计较详细,说话也啰嗦,因此可能会写几篇才能介绍完. 本人属菜鸟一枚,刚接触.net两个星期,写的东西也是照搬自己看的视频里老师教的东西,其目的主要是为了巩固自己学习,当然,如果正好能帮助到和我一样的刚

java jdbc数据库操作

1 package shb.java.demo3; 2 3 import java.sql.DriverManager; 4 import java.sql.ResultSet; 5 import java.sql.SQLException; 6 import java.sql.Statement; 7 /** 8 * jdbc操作数据库 9 * @Package:com.cnpc.dlp.web.event.controller 10 * @Description: 11 * @author

简单数据库操作的Model类

1. [代码][PHP]代码 ? 1 2 3 4 5 <?php     define("HOSTNAME","127.0.0.1");     define("USERNAME","root");     define("PASSWORD","");     define("DATANAME","class"); 2. [代码][PHP]代

java:数据库操作JDBC

JDBC详解:https://www.cnblogs.com/erbing/p/5805727.html JDBC存储过程,事务管理,数据库连接池,jdbc的封装框架:https://www.cnblogs.com/Qian123/p/5349884.html#_labelTop 原文地址:https://www.cnblogs.com/ysq2018China/p/10360364.html

java工具类--数据库操作封装类

java对数据库操作简单处理,如下代码即可,封装了 增删改查及获取连接.关闭连接. 代码如下: package com.test; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; /** * 操作数据库工具类 * * */ public class DbUtil { /** * 连接数据 * * @ret

安卓 SQLite数据库操作实例

前段时间写了个安卓平台下SQLite数据库操作的实例 ,一直没得时间总结 ,今天把它弄出来了. 在Android 运行时环境包含了完整的 SQLite. 首先介绍一下SQLite这个数据库: SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了.它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tc

在安卓开发中使用SQLite数据库操作实例

前段时间写了个安卓平台下SQLite数据库操作的实例 ,一直没得时间总结 ,今天把它弄出来了. 在Android 运行时环境包含了完整的 SQLite. 首先介绍一下SQLite这个数据库: SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了.它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tc

Java Web的数据库操作(一)

一.JDBC技术 1.JDBC简介 JDBC是Java程序与数据库系统通信的标准API,它定义在JDK的API中,通过JDBC技术,Java程序可以非常方便地与各种数据库交互,JDBC在Java程序与数据库系统之间假期了一座桥梁. JDBC由一组用Java语言编写的类和接口组成,它对数据库的操作提供了基本方法,但由于数据库种类跟多且多有不同,所以对数据库的细节操作由数据库厂商进行实现,且厂商需要提供数据库的驱动程序,下图为Java程序与数据库相交互的示意图: 2.JDBC连接数据库的过程 l 

Android—Ormlite框架简单的操作数据库

大家在Android项目中或多或少的都会使用数据库,为了提高我们的开发效率,当然少不了数据库ORM框架了,尤其是某些数据库操作特别频繁的app:本篇博客将详细介绍ORMLite的简易用法. 下面开始介绍ORMLite的入门用法~ 1.下载 ORMLite Jar 首先去ORMLite官网下载jar包,对于Android为:ormlite-android-5.0.jar 和 ormlite-core-5.0.jar : ps:访问不了的朋友,文章末尾会把jar.源码.doc与本篇博客例子一起打包提