精华内容
下载资源
问答
  • ## 情况是这样的,代码用的utf-8,数据库用的gbk结果代码中将 • 该符号保存 ## 到数据库出现乱码,请问除了换数据库字符集还有什么处理方式。
  • java的swing组件画出表格,实现“增加”、“删除”、“保存”、“退出”的功能,并且与mysql数据库相连接。...可以实现提取数据库中表的数据显示含有表格的窗体上,也可以将在表格中修改的内容写入数据库表中。

    用java的swing组件画出表格,实现“增加”、“删除”、“保存”、“退出”的功能,并且与mysql数据库相连接。

    可以实现提取数据库中表的数据显示到含有表格的窗体上,也可以将在表格中修改的内容写入数据库表中。

    我实现以上功能时用了两个类,其中一个类是MyFrame,另外一个类是PutinStorage。

    具体代码如下(以下代码均为完整代码,经测试成功的):

    PutinStorage类:

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.ResultSetMetaData;
    import java.sql.SQLException;
    import java.util.Vector;
    
    import javax.swing.JOptionPane;
    
    public class PutinStorage {
    	// 得到数据库表数据
    	public static Vector getRows(){
    		String sql_url = "jdbc:mysql://localhost:3306/haha";	//数据库路径(一般都是这样写),test是数据库名称
    		String name = "root";		//用户名
    		String password = "123456";	//密码
    		Connection conn;
    		PreparedStatement preparedStatement = null;
    
    		Vector rows = null;
    		Vector columnHeads = null;
    		
    		try {
    			Class.forName("com.mysql.jdbc.Driver");		//连接驱动
    			conn = DriverManager.getConnection(sql_url, name, password);	//连接数据库
    //			if(!conn.isClosed())
    //				System.out.println("成功连接数据库");
    			preparedStatement = conn.prepareStatement("select * from aa");
    			ResultSet result1 = preparedStatement.executeQuery();
    			
    			if(result1.wasNull())
    				JOptionPane.showMessageDialog(null, "结果集中无记录");
    			
    			rows = new Vector();
    			
    			ResultSetMetaData rsmd = result1.getMetaData();
    					
    			while(result1.next()){
    				rows.addElement(getNextRow(result1,rsmd));
    			}
    			
    		} catch (ClassNotFoundException e) {
    			// TODO Auto-generated catch block
    			System.out.println("未成功加载驱动。");
    			e.printStackTrace();
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			System.out.println("未成功打开数据库。");
    			e.printStackTrace();
    		}
    		return rows;
    	}
    	
    	// 得到数据库表头
    	public static Vector getHead(){
    		String sql_url = "jdbc:mysql://localhost:3306/haha";	//数据库路径(一般都是这样写),test是数据库名称
    		String name = "root";		//用户名
    		String password = "123456";	//密码
    		Connection conn;
    		PreparedStatement preparedStatement = null;
    
    		Vector columnHeads = null;
    		
    		try {
    			Class.forName("com.mysql.jdbc.Driver");		//连接驱动
    			conn = DriverManager.getConnection(sql_url, name, password);	//连接数据库
    //			if(!conn.isClosed())
    //				System.out.println("成功连接数据库");
    			preparedStatement = conn.prepareStatement("select * from aa");
    			ResultSet result1 = preparedStatement.executeQuery();
    			
    			boolean moreRecords = result1.next();
    			if(!moreRecords)
    				JOptionPane.showMessageDialog(null, "结果集中无记录");
    			
    			columnHeads = new Vector();
    			ResultSetMetaData rsmd = result1.getMetaData();
    			for(int i = 1; i <= rsmd.getColumnCount(); i++)
    				columnHeads.addElement(rsmd.getColumnName(i));
    			
    		} catch (ClassNotFoundException e) {
    			// TODO Auto-generated catch block
    			System.out.println("未成功加载驱动。");
    			e.printStackTrace();
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			System.out.println("未成功打开数据库。");
    			e.printStackTrace();
    		}
    		return columnHeads;
    	}
    	
    	// 得到数据库中下一行数据
    	private static Vector getNextRow(ResultSet rs,ResultSetMetaData rsmd) throws SQLException{
    		Vector currentRow = new Vector();
    		for(int i = 1; i <= rsmd.getColumnCount(); i++){
    			currentRow.addElement(rs.getString(i));
    		}
    		return currentRow;
    	}
    	
    	/*//主函数
    	 public static void main(String[] args){
    		 getRows();
    	}*/
    }
    
    MyFrame类:

    import java.awt.BorderLayout;
    import java.awt.FlowLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.SQLException;
    import java.util.Vector;
    
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
    import javax.swing.table.DefaultTableModel;
    
    import per.tushu.storage.PutinStorage;
    
    public class MyFrame extends JFrame{
    	
    	DefaultTableModel tableModel;		// 默认显示的表格
    	JButton add,del,exit,save;		// 各处理按钮
    	JTable table;		// 表格
    	
    	JPanel panelUP;	//增加信息的面板
    	
    	// 构造函数
    	public MyFrame(){
    		this.setBounds(300, 200, 600, 450);		// 设置窗体大小
    		this.setTitle("测试");		// 设置窗体名称
    		this.setLayout(new BorderLayout());	// 设置窗体的布局方式
    				
    		// 新建各按钮组件
    		add = new JButton("增加");
    		del = new JButton("删除");
    		save = new JButton("保存");
    		exit = new JButton("退出");
    		
    		panelUP = new JPanel();		// 新建按钮组件面板
    		panelUP.setLayout(new FlowLayout(FlowLayout.LEFT));	// 设置面板的布局方式
    		
    		// 将各按钮组件依次添加到面板中
    		panelUP.add(add);
    		panelUP.add(del);
    		panelUP.add(save);
    		panelUP.add(exit);
    		
    		// 取得haha数据库的aa表的各行数据
    		Vector rowData = PutinStorage.getRows();
    		// 取得haha数据库的aa表的表头数据
    		Vector columnNames = PutinStorage.getHead();
    		
    		
    		// 新建表格
    		tableModel = new DefaultTableModel(rowData,columnNames);	
    		table = new JTable(tableModel);
    		
    		JScrollPane s = new JScrollPane(table);
    		
    		// 将面板和表格分别添加到窗体中
    		this.add(panelUP,BorderLayout.NORTH);
    		this.add(s);
    		
    		// 事件处理
    		MyEvent();
    		
    		this.setVisible(true);		// 显示窗体
    		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);		 // 设置窗体可关闭
    	}
    	
    	// 事件处理
    	public void MyEvent(){
    		
    		// 增加
    		add.addActionListener(new ActionListener(){
    
    			@Override
    			public void actionPerformed(ActionEvent arg0) {
    				// 增加一行空白区域
    				tableModel.addRow(new Vector());
    			}
    			
    		});
    		
    		// 删除
    		del.addActionListener(new ActionListener(){
    
    			@Override
    			public void actionPerformed(ActionEvent arg0) {
    				// TODO Auto-generated method stub
    				// 删除指定行
    				int rowcount = table.getSelectedRow();
    				if(rowcount >= 0){
    					tableModel.removeRow(rowcount);
    				}
    			}
    			
    		});
    		
    		/**
    		 * 保存
    		 * 我的解决办法是直接将aa表中的全部数据删除,
    		 * 将表格中的所有内容获取到,
    		 * 然后将表格数据重新写入aa表
    		 */
    		save.addActionListener(new ActionListener(){
    
    			@Override
    			public void actionPerformed(ActionEvent e) {	
    				int column = table.getColumnCount();		// 表格列数
    				int row = table.getRowCount();		// 表格行数
    				
    				// value数组存放表格中的所有数据
    				String[][] value = new String[row][column];
    				
    				for(int i = 0; i < row; i++){
    					for(int j = 0; j < column; j++){
    						value[i][j] = table.getValueAt(i, j).toString();
    					}
    				}
    				
    				// 以下均为对数据库的操作
    				String sql_url = "jdbc:mysql://localhost:3306/haha";	//数据库路径(一般都是这样写),haha是数据库名称
    				String name = "root";		//用户名
    				String password = "123456";	//密码
    				Connection conn;
    				PreparedStatement preparedStatement = null;
    
    				try {
    					Class.forName("com.mysql.jdbc.Driver");		//连接驱动
    					conn = DriverManager.getConnection(sql_url, name, password);	//连接数据库
    					if(!conn.isClosed())
    						System.out.println("成功连接数据库");
    					
    					// 删除aa表中所有数据
    					preparedStatement = conn.prepareStatement("delete from aa where true");
    					preparedStatement.executeUpdate();
    					
    					// 将value数组中的数据依次存放到aa表中
    					for(int i = 0; i < row; i++){
    						preparedStatement = conn.prepareStatement("insert into aa values(" + Integer.parseInt(value[i][0]) + ",'" + value[i][1] + "')");
    						preparedStatement.executeUpdate();
    					}
    					
    				} catch (ClassNotFoundException e1) {
    					// TODO Auto-generated catch block
    					System.out.println("未成功加载驱动。");
    					e1.printStackTrace();
    				} catch (SQLException e1) {
    					// TODO Auto-generated catch block
    					System.out.println("未成功打开数据库。");
    					e1.printStackTrace();
    				}
    				
    				// 保存后退出
    				System.exit(0);
    			}
    		});
    		
    		// 退出
    		exit.addActionListener(new ActionListener(){
    			@Override
    			public void actionPerformed(ActionEvent e) {
    			// TODO Auto-generated method stub
    				System.exit(0);
    			}
    				
    		});
    	}
    	
    	// 主函数
    	public static void main(String[] args){
    		new MyFrame();
    	}
    }
    
    执行以上代码的时候,最初显示的窗体如下所示:

    点击增加按钮并写入需要增加的内容(我增加了三次)如下图:

    点击删除按钮,删除指定行(我删除了第2行和第4行),如下图:

    点击保存按钮,会发现窗口也关闭了。这是你可以再重新执行代码,会发现出现的表格页面与上图一样。

    点击退出按钮,关闭窗口。



    展开全文
  • 每隔一定将redis里面的数据取出并存储到数据库中,这里记录一下如何在ssm项目中整合Java Timer创建定时任务并启动。 1.创建定时任务对象: import java.util.TimerTask; public class RedisTask extends TimerTask...

    为了统计用户使用系统菜单的点击次数,将相应的日志信息存储到数据库中,但是一次一条的插入会导致存储速率缓慢,占用服务器及数据库资源等相关一系列的问题,所以为了避免这种情况,损耗了一定的实时性,将数据先存储至redis,每隔一定将redis里面的数据取出并存储到数据库中,这里记录一下如何在ssm项目中整合Java Timer创建定时任务并启动。

    1.创建定时任务对象:

    import java.util.TimerTask;
    
    public class RedisTask extends TimerTask{
    
    	@Override
    	public void run() {
    		System.out.println("执行redisTask");
    	}
    }
    
    

    run方法中即是定时执行的代码。

    2.注入定时任务到spring ioc容器,交由容器管理:

    <!-- 注册定时任务类:redis定时任务 -->
    <bean id="redisTask" class="com.gaotime.fc.platform.web.controller.task.RedisTask"></bean> 
    

    3.对该定时任务配置相关的定时任务信息:

    <!-- 配置任务计划:注册定时器信息 -->
    <bean id="taskInfo" class="org.springframework.scheduling.timer.ScheduledTimerTask">
    	<!-- 第一次执行任务前需要等待的时间 -->
    	<property name="delay" value="1000"></property>
    	<!-- 设置任务的执行周期 -->
    	<property name="period" value="10000"></property>
    	<!-- 设置具体执行的任务 -->
    	<property name="timerTask" ref="redisTask"></property>
    </bean>
    

    如需一个配置配置多个定时任务,可在timerTask属性中使用list。

    4.配置该定时任务的调度器:

    <!-- 配置定时器任务的调度器 -->
    <bean id="timerFactory" class="org.springframework.scheduling.timer.TimerFactoryBean">
    	<!-- 注册定时器列表 -->
    	<property name="scheduledTimerTasks">
    		<list>
    			<ref local="taskInfo"></ref>
    		</list>
    	</property>
    </bean>
    

    5.配置扫描:

    将配置的xml文件在web.xml中进行配置,启动即可:

    <context-param>
    	<param-name>contextConfigLocation</param-name>
    	<param-value>classpath*:/spring/*.xml</param-value>  <!--加载多个spring配置文件 -->
    </context-param>
    <listener> 
    	<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    

    文章参考:

    展开全文
  • 崇德易城市数据
  • 在向数据库存储一条信息的过程中出现了数据库的乱码问题 ssm项目 方法为get类型 一步一步开始排查错误 一开始没多想,想到get类型的方法就直接在后台 String str = new String(request.getParameter(“param...

    在向数据库中存储一条信息的过程中出现了数据库的乱码问题
    ssm项目
    方法为get类型
    一步一步开始排查错误
    一开始没多想,想到get类型的方法就直接在后台
    String str = new String(request.getParameter(“param”).getBytes(“iso8859-1”),“UTF-8”);
    很自信的重启了项目发现并没什么变化
    认真一点开始排查
    打断点,查看到底是在执行存数据库操作之前就已经乱码了,还是存数据库操作后乱码的。
    发现传值并无问题,问题是在存储到数据库的时候发生乱码。
    问题找到了开始找解决问题的办法
    首先试了更改tomcat的uriEncoding
    在pom.xml中

    		   <plugin>
    				<groupId>org.apache.tomcat.maven</groupId>
    				<artifactId>tomcat7-maven-plugin</artifactId>
    				<configuration>
    					<port>8081</port>
    					<path>/</path>
    					<uriEncoding>UTF-8</uriEncoding>
    				</configuration>
    			</plugin>
    

    然而发现还是没有用。
    再仔细想了想还有没有疏漏的地方
    在配置jdbc数据源的时候加上:
    characterEncoding=UTF-8
    jdbc.url =jdbc:mysql://127.0.0.1:3306/xxxx?characterEncoding=UTF-8
    再次重启项目问题解决。

    顺便搜罗了一下此种问题的其他

    展开全文
  • java实现mqtt发布数据,订阅端接收到数据插入到数据库中。一、 前期准备二、需求三、代码下载四、代码分析1.pom.xml2.连接类3.改动注意五、测试java实现mqtt发布数据,订阅端接收到数据插入到数据库中--不过如此六、...

    一、 前期准备

    mqtt入门的前两个博客请参看

    1.01 MQTT小例子-连接
    https://blog.csdn.net/qq_44218805/article/details/113453789
    2.02MQTT小例子-java实现接入平台实现发布与订阅功能
    https://blog.csdn.net/qq_44218805/article/details/113835063
    

    二、需求

    这里想用java实现,将mqtt订阅到的数据插入到数据库
    	1.使用最简单的连接方式
    	2.sql在项目中,下载后,自己导入本地即可。
    	3.用java发布端发布数据,用java订阅端接收数据,再将其插入到数据库中
    
    

    三、代码下载

    下载地址:
    https://gitee.com/nalan-taotao/javamqtttestSingle04

    在这里插入图片描述

    四、代码分析

    1.pom.xml

     <!-- https://mvnrepository.com/artifact/org.eclipse.paho/org.eclipse.paho.client.mqttv3 -->
            <dependency>
                <groupId>org.eclipse.paho</groupId>
                <artifactId>org.eclipse.paho.client.mqttv3</artifactId>
                <version>1.2.0</version>
            </dependency>
    
            <!-- https://mvnrepository.com/artifact/junit/junit -->
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.13.1</version>
                <scope>test</scope>
            </dependency>
    
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.47</version>
            </dependency>
    

    2.连接类

    public class connection {
        Connection dbconn = null;
        public Connection getConnection2(){
            String driver6 = "com.mysql.cj.jdbc.Driver";
            String driver5 = "com.mysql.jdbc.Driver";
            String dburl = "jdbc:mysql://127.0.0.1:3306/device01?useSSL=false&useUnicode=true&characterEncoding=utf-8";
            String username = "root";
            String password = "XXX";
            try {
                //加载驱动
                Class.forName(driver5);
                //创建连接对象
                dbconn = DriverManager.getConnection(dburl,username,password);
                return dbconn;
    
            }catch (ClassNotFoundException e){
                System.out.println(e);
                System.out.println("驱动程序类没有找到");
                return null;
    
            }catch (SQLException e1){
                System.out.println(e1);
                return null;
            }
    
        }
    
        public void destroy(){
            try{
                dbconn.close();
    
            }catch (Exception e2){
                e2.printStackTrace();
            }
        }
    
    
    
    
    }
    

    3.改动注意

    添加插入数据库的操作
    在这里插入图片描述

    五、测试

    在测试包中进行测试
    在这里插入图片描述
    数据展示
    在这里插入图片描述

    java实现mqtt发布数据,订阅端接收到数据插入到数据库中–不过如此

    六、下步目标

    可不可以使用数据库连接池实现上面的需求
    
    展开全文
  • JAVA实现定时任务接口,定时按时间增量去同步第三方系统的数据,第三方接口有数据量限制(1000),请问在某次调用第三方接口时获取了1000条记录,在存储到自有数据库时,比如第200条记录出现异常存储失败,这时候...
  • 在网站开发中经常遇到级联数据的展示,比如选择城市...所以需要一个能将JSON数据(一般存储在javascript脚本中)结构全部导入到数据库中的功能。 JSON的特点是支持层级结构、支持数组表示的对象 。下面的示例介绍如何将
  • Java如何将数据到数据库(MySQL)

    万次阅读 2018-07-09 20:49:43
    一、JDBC 首先我们先介绍一下JDBC,JDBC简单来说是Java为程序员所提供的与数据库进行交互的应用接口,在JDBC出现之前微软公司曾发布了ODBC,ODBC也是程序员与数据库交互的接口。JDBC的英文全称为 Java DataBase ...
  • java如何将图片储存到数据库

    千次阅读 2020-10-25 10:20:44
    jsp上传文件通过java将其存储至mysql数据库 在开发上我们经常遇到图片文档等数据,目前有两种方式存储文件,一种就是直接存储至服务器的某个路径下,第二种就是将其存入数据库中 1.在mysql的表中建一个字段存储文件 ...
  • Java存储Map集合到数据库

    万次阅读 2019-06-11 17:58:15
    从图中可以看到除了上面的数据为固定值,下面的数据(变量名和变量值都是不固定的),这些数据如何存储到表中呢?话不多说直接上代码: 代码实现 controller @PostMapping("updateGroup") public APIResult updateGrou...
  • Java上传文件到数据库

    千次阅读 2016-02-29 20:22:30
    Java上传文件到数据库  首先在开始本文之前推荐一篇我非常喜欢的博主——孤傲苍狼的一篇相关博文。  JavaWeb学习总结(五十)——文件上传和下载   http://www.cnblogs.com/xdp-gacl/p/4200090.html  本文主要...
  • java web从网页表单输入数据存储到MySQL数据库

    万次阅读 多人点赞 2017-05-22 09:25:01
    最近做的项目中有一个模块需要填写页面上的表单,然后将表单的内容存入MySQL数据库,下面将代码贴出来。 项目结构: 数据库设计: 3.各部分代码: package com.Interface: package com.Interface;import java....
  • 我们在开发中可能会遇到将数据库中的数据都取出来存储到excel中去 在操作过程中用到了poi-3.17.jar包 /** * 构建Excel * map参数 用来保存数据 保存的是从Handler传递过来的数据 * workBook 操作Excel ...
  • 主要还是怎么从RocketMQ中读取消息,然后对消息进行处理存储到数据库中,但读取消息那一步查了很久还是没有有效的方法 只是从RocketMQ中读取消息,需要使用Producer-Consumer机制么,也就是以RocketMQ为Producer,...
  • 爬虫的应用爬取数据存储数据库加下载图片以及日志的优化和日志存储的位置
  • 将从串口接收过来的十六进制数据转换成十进制数据,同时将这些数据存储到数据库中,利用C++或者JAVA编写 大家能上源码吗
  • java保存文件到数据库

    热门讨论 2010-04-18 11:32:28
    将文件以二进制方式写入数据库,并将其读出还原。 数据库字段image
  • Java 图片保存到数据库

    千次阅读 2019-06-17 19:52:46
    本实例要实现的是上传图片同时带有字段保存到数据库,首先我们需要引入commons-io-2.5.jar和commons-fileupload-1.3.2.jar包,其次最为重要的是中jsp页面的表单中from务必要有这两个属性为method="post"和 enctype=...
  • java信息注册系统(数据库存储数据)Java实用源码整理learns
  • Java实现从excel中批量高效导入数据到数据库中,包括图片的导入存储,读取图片显示在jsp页面等,需要下载JspSmartUpload.jar和jxl.jar两个jar包,将两个包导入项目才能运行
  • * 数据源 */ public void ImportDataByJdbc() { long startTime = System.currentTimeMillis(); //获取开始时间 Connection con = null;// 创建一个数据库连接 PreparedStatement pre = null;// 创建预编译...
  • JDBC创建触发器 JDBC存储过程 JDBC创建表 数据备份 java备份数据库/JAVA恢复数据java导入sql脚本
  • 最近公司叫我这个实习生去写一个爬虫,将爬取数据到数据库中,再通过前端界面渲染出来,这可是一个大难题啊,我从来没写过爬虫,最近学了一下,写了一个爬虫实例,并将其存数据库中,现在分享给大家。...
  • java实现图片文件存储到数据库

    万次阅读 热门讨论 2017-02-26 17:41:39
    参见:http://www.cnblogs.com/kakag/p/3145140.html1、数据表:create table tb_file( -> fid SMALLINT AUTO_INCREMENT NOT NULL PRIMARY KEY, -> fname VARCHAR(50) NOT NULL, -> fcontent LONGBLOB NOT NULL )
  • 使用Java实现图片的存储-------存储到数据库中并读取 求代码
  • Java同步枚举类数据到数据库的实现

    千次阅读 2020-07-28 15:38:20
    我们在开发中常常会用到数据字典,后端程序中也会经常用到(一般是用枚举类来存储),然而我们数据库中也会维护一个数据字典的数据,便于前段做数据显示时的处理,有一个问题就是,如果字典项发生变化后,我们需要...
  • java获取扫描枪的数据到数据库

    万次阅读 热门讨论 2017-10-16 22:11:03
    基本思路: 1.通过按钮获取输入框焦点 2.扫描二维码或条形码,并设置回车键(大部分扫描枪已自动设置) ...4.获取输入框的值,将数据传入数据库  (传数据的时候出错了,调试了好久,先暂停。明天再看) 代码如下:
  • JAVA串口助手接收串口来的数据,并将数据解析存储入MySQL数据库中,在使用前串口需要有设备,同时自己创建数据库数据表,见README

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 566,694
精华内容 226,677
关键字:

java数据存储到数据库

java 订阅