精华内容
下载资源
问答
  • layui数据表格数据导入

    千次阅读 2019-04-27 11:14:34
    毕业设计的后台的PC端管理界面是用layui框架搭的,在其中的内联框架中包含了一些数据表格,开始完全不懂该怎么导入数据,后来问了老师,老师跟我讲了才知道。我的毕业设计是用php做的后台,下面就是导入的方式: ...

    毕业设计的后台的PC端管理界面是用layui框架搭的,在其中的内联框架中包含了一些数据表格,开始完全不懂该怎么导入数据,后来问了老师,老师跟我讲了才知道。我的毕业设计是用php做的后台,下面就是导入的方式:

    框架:layui

    环境:win10 + sublime + wampserver

    下图是layui的数据表格形式:

    首先调处开发者工具,并过滤不需要的信息,查看数据传输格式:

    选择上图下面的红色箭头指的文件,就可以查看数据传送到layui框架的数据格式了。

    可以看到数据在传送过去的时候加了code、msg、count三个字段,那么在把数据转化为json格式之后还要添加这三个字段layui的这个数据表格框架才会接受我们传输的数据。

    下面是我的php代码:

    <?php
    	header("Content-type:text/html;charset=utf-8");
    
    	$conn = mysql_connect("localhost","root","");
    
    	mysql_select_db("test", $conn);
    
    	mysql_query("SET NAMES utf8");
    
    	$sql = "select * from athlete";
    	$count = "select * from athlete";
    
    	$check_quary = mysql_query($sql);
    	$result = mysql_query($count);
    
    	$num = mysql_num_rows($result);
    
    	$jarr = array();
    
    	while($rows=mysql_fetch_assoc($check_quary)){
    	    $count=count($rows);//不能在循环语句中,由于每次删除 row数组长度都减小  
    	    for($i=0;$i<$count;$i++){  
    	        unset($rows[$i]);//删除冗余数据  
        	}
        	array_push($jarr,$rows);
    	}
    	$jobj = new stdclass();
    	foreach($jarr as $key => $value) {
    		$jobj->$key = $value;
    	}
    
    	// print_r($jobj);
    
    	$json = json_encode($jobj);
    
    	$temp=array();
    	
    	$temp['code']=0;
    	$temp['msg']='';
    	$temp['count']= $num;
    	$temp['data']=$jobj;
    
    	$fina = json_encode($temp);
    	echo $fina;
    	return $fina;
    ?>

     其中$jobj就是从数据库中查出来的数据并转化为json格式,最后赋给$temp的data,在$temp添加layui要求的三个字段之后就可以传输到layui并且显示出来了。

    下面是数据库和显示的实例:

    这是athlete的数据表

    经过php查询以及格式转化后传送到layui的数据表格框架显示为

    以上就是关于数据传输到layui数据表格的内容 

    展开全文
  • PyQt5数据库建表 + SQL 语句Qt designer 制作界面连接 MySQL 相关知识查询并获取数据库的数据运行效果 数据库建表 + SQL 语句 建立一个数据库:test 建立一张数据表:tab,SQL 语句如下: SET FOREIGN_KEY_CHECKS=...

    数据库建表 + SQL 语句


    在这里插入图片描述
    建立一个数据库:test

    建立一张数据表:tab,SQL 语句如下:

    SET FOREIGN_KEY_CHECKS=0;
    
    -- ----------------------------
    -- Table structure for tab
    -- ----------------------------
    DROP TABLE IF EXISTS `tab`;
    CREATE TABLE `tab` (
      `id` int(11) NOT NULL,
      `name` varchar(255) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    -- ----------------------------
    -- Records of tab
    -- ----------------------------
    INSERT INTO `tab` VALUES ('172101', '小明');
    INSERT INTO `tab` VALUES ('172102', '小红');
    INSERT INTO `tab` VALUES ('172103', '小黄');
    INSERT INTO `tab` VALUES ('172104', '小黑');
    INSERT INTO `tab` VALUES ('172105', '小三');
    INSERT INTO `tab` VALUES ('172106', '小白');
    

    Qt designer 制作界面

    Qt designer 基本使用可以参考:【PyQt5】使用 designer 开发 python GUI 界面

    我们随意做一个有 tableWidget 的界面保存为 hello.ui 并转为 hello.py:(代码下面有)
    在这里插入图片描述
    hello.ui 界面文件转为的 hello.py 代码如下:

    # -*- coding: utf-8 -*-
    
    # Form implementation generated from reading ui file 'hello.ui'
    #
    # Created by: PyQt5 UI code generator 5.15.0
    #
    # WARNING: Any manual changes made to this file will be lost when pyuic5 is
    # run again.  Do not edit this file unless you know what you are doing.
    
    
    from PyQt5 import QtCore, QtGui, QtWidgets
    
    
    class Ui_MainWindow(object):
        def setupUi(self, MainWindow):
            MainWindow.setObjectName("MainWindow")
            MainWindow.resize(316, 372)
            self.centralwidget = QtWidgets.QWidget(MainWindow)
            self.centralwidget.setObjectName("centralwidget")
            self.tableWidget = QtWidgets.QTableWidget(self.centralwidget)
            self.tableWidget.setGeometry(QtCore.QRect(11, 11, 301, 271))
            self.tableWidget.setObjectName("tableWidget")
            self.tableWidget.setColumnCount(2)
            self.tableWidget.setRowCount(9)
            item = QtWidgets.QTableWidgetItem()
            self.tableWidget.setVerticalHeaderItem(0, item)
            item = QtWidgets.QTableWidgetItem()
            self.tableWidget.setVerticalHeaderItem(1, item)
            item = QtWidgets.QTableWidgetItem()
            self.tableWidget.setVerticalHeaderItem(2, item)
            item = QtWidgets.QTableWidgetItem()
            self.tableWidget.setVerticalHeaderItem(3, item)
            item = QtWidgets.QTableWidgetItem()
            self.tableWidget.setVerticalHeaderItem(4, item)
            item = QtWidgets.QTableWidgetItem()
            self.tableWidget.setVerticalHeaderItem(5, item)
            item = QtWidgets.QTableWidgetItem()
            self.tableWidget.setVerticalHeaderItem(6, item)
            item = QtWidgets.QTableWidgetItem()
            self.tableWidget.setVerticalHeaderItem(7, item)
            item = QtWidgets.QTableWidgetItem()
            self.tableWidget.setVerticalHeaderItem(8, item)
            item = QtWidgets.QTableWidgetItem()
            self.tableWidget.setHorizontalHeaderItem(0, item)
            item = QtWidgets.QTableWidgetItem()
            self.tableWidget.setHorizontalHeaderItem(1, item)
            item = QtWidgets.QTableWidgetItem()
            item.setTextAlignment(QtCore.Qt.AlignCenter)
            self.tableWidget.setItem(0, 0, item)
            self.button_read = QtWidgets.QPushButton(self.centralwidget)
            self.button_read.setGeometry(QtCore.QRect(90, 300, 121, 41))
            self.button_read.setObjectName("button_read")
            MainWindow.setCentralWidget(self.centralwidget)
            self.statusbar = QtWidgets.QStatusBar(MainWindow)
            self.statusbar.setObjectName("statusbar")
            MainWindow.setStatusBar(self.statusbar)
    
            self.retranslateUi(MainWindow)
            QtCore.QMetaObject.connectSlotsByName(MainWindow)
    
        def retranslateUi(self, MainWindow):
            _translate = QtCore.QCoreApplication.translate
            MainWindow.setWindowTitle(_translate("MainWindow", "tableDemo"))
            item = self.tableWidget.verticalHeaderItem(0)
            item.setText(_translate("MainWindow", "1"))
            item = self.tableWidget.verticalHeaderItem(1)
            item.setText(_translate("MainWindow", "2"))
            item = self.tableWidget.verticalHeaderItem(2)
            item.setText(_translate("MainWindow", "3"))
            item = self.tableWidget.verticalHeaderItem(3)
            item.setText(_translate("MainWindow", "4"))
            item = self.tableWidget.verticalHeaderItem(4)
            item.setText(_translate("MainWindow", "5"))
            item = self.tableWidget.verticalHeaderItem(5)
            item.setText(_translate("MainWindow", "6"))
            item = self.tableWidget.verticalHeaderItem(6)
            item.setText(_translate("MainWindow", "7"))
            item = self.tableWidget.verticalHeaderItem(7)
            item.setText(_translate("MainWindow", "8"))
            item = self.tableWidget.verticalHeaderItem(8)
            item.setText(_translate("MainWindow", "9"))
            item = self.tableWidget.horizontalHeaderItem(0)
            item.setText(_translate("MainWindow", "ID"))
            item = self.tableWidget.horizontalHeaderItem(1)
            item.setText(_translate("MainWindow", "姓名"))
            __sortingEnabled = self.tableWidget.isSortingEnabled()
            self.tableWidget.setSortingEnabled(False)
            self.tableWidget.setSortingEnabled(__sortingEnabled)
            self.button_read.setText(_translate("MainWindow", "读取"))
    

    连接 MySQL 相关知识

    Python 连接 MySQL 请看这个:【Python】PyMySQL 连接 MySQL数据库

    查询并获取数据库的数据

    由于我们界面与逻辑分离,界面代码前面已经有了,现在要写逻辑代码;
    新建一个 main.py,然后写入下面代码,即可在 tableWidget 中展示数据库中的数据。

    主要了解以下几个知识点:

    • 连接 mysql 并 查询数据库,cur.fetchall() 返回的是二维元组
    #数据库连接对象
    conn = pymysql.connect(host='localhost', port=3306, user='root', password="1234", db="test")
    # 游标对象
    cur = conn.cursor()
    # 查询的sql语句
    sql = "SELECT * FROM tab"
    cur.execute(sql)
    # 获取查询到的数据, 是以二维元组的形式存储的, 所以读取需要使用 data[i][j] 下标定位
    data = cur.fetchall()
    # 打印测试
    print(data)
    # print(data[0][1]) # 打印第1行第2个数据, 也就是小明
    
    • 遍历二维元组并将数据显示到表格上:
    # 遍历二维元组, 将 id 和 name 显示到界面表格上
    x = 0
    for i in data:
        y = 0
        for j in i:
            self.tableWidget.setItem(x, y, QtWidgets.QTableWidgetItem(str(data[x][y])))
            y = y + 1
        x = x + 1
    

    完整代码:

    import sys
    from PyQt5 import QtGui, QtWidgets
    from PyQt5.QtCore import *
    from PyQt5.QtWidgets import QApplication, QMainWindow, QHeaderView
    
    from hello import Ui_MainWindow
    
    import pymysql
    
    class MyMainWindow(QMainWindow, Ui_MainWindow):
        def __init__(self):
            super(MyMainWindow, self).__init__()
            self.setupUi(self)
            # 【读取】功能
            self.button_read.clicked.connect(self.read)
    
        # 【读取】按钮功能
        def read(self):
            # 数据库连接对象
            conn = pymysql.connect(host='localhost', port=3306, user='root', password="1234", db="test")
            # 游标对象
            cur = conn.cursor()
            
            # 查询的sql语句
            sql = "SELECT * FROM tab"
            cur.execute(sql)
            # 获取查询到的数据, 是以二维元组的形式存储的, 所以读取需要使用 data[i][j] 下标定位
            data = cur.fetchall()
            # 打印测试
            print(data)
            # print(data[0][1]) # 打印第1行第2个数据, 也就是小明
    
            # 遍历二维元组, 将 id 和 name 显示到界面表格上
            x = 0
            for i in data:
                y = 0
                for j in i:
                    self.tableWidget.setItem(x, y, QtWidgets.QTableWidgetItem(str(data[x][y])))
                    y = y + 1
                x = x + 1
    
            cur.close()
            conn.close()
    
    if __name__ == "__main__":
        QApplication.setAttribute(Qt.AA_EnableHighDpiScaling)
        app = QApplication(sys.argv)
        win = MyMainWindow()
        win.show()
        sys.exit(app.exec())
    

    运行效果

    在这里插入图片描述

    展开全文
  • 将excel表格数据转为数据库数据

    千次阅读 2019-08-26 17:35:43
    将excel表格数据转为数据库数据 使用的是POI,思路是:将excel的数据全部取出封装在实体类中,然后使用jdbc将数据写入数据库. 使用的依赖 <dependency> <groupId>mysql</groupId> <...

    将excel表格数据转为数据库数据

    使用的是POI,思路是:将excel的数据全部取出封装在实体类中,然后使用jdbc将数据写入数据库.
    将数据库数据转为excel:https://blog.csdn.net/sqlgao22/article/details/100736325

    (一)Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对Microsoft Office格式档案读和写的功能。

    (二)POI框架的类库:
    HSSF - 提供读写Microsoft Excel格式档案的功能。
    XSSF - 提供读写Microsoft Excel OOXML格式档案的功能。
    HWPF - 提供读写Microsoft Word格式档案的功能。
    HSLF - 提供读写Microsoft PowerPoint格式档案的功能。
    HDGF - 提供读写Microsoft Visio格式档案的功能。

    使用的依赖

    		<dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>8.0.15</version>
            </dependency>
            
            <dependency>
                <groupId>org.apache.poi</groupId>
                <artifactId>poi</artifactId>
                <version>3.17</version>
            </dependency>
            
            <dependency>
                <groupId>org.apache.poi</groupId>
                <artifactId>poi-ooxml</artifactId>
                <version>3.17</version>
            </dependency>
    
            <dependency>
                <groupId>com.google.guava</groupId>
                <artifactId>guava</artifactId>
                <version>27.0.1-jre</version>
            </dependency>
    

    封装的实体类

    单元格类
    public class XCell {
        private int cellIndex;
        private String value;
        }
    
    excel表行类
    public class XRow {
        private int rowIndex;
        private List<XCell> rowValue;
        }
    

    工具类

    读取excel的
    public class ReadExcel {
        /**
         * 获取第一行的数据,作为数据库字段的注释
         * @param file
         * @return
         * @throws Exception
         */
        public static XRow getFirstRowData(File file) throws Exception {
    
            if (!file.exists()) {
                return null;
            }
    
            //获取 work
            FileInputStream fis = new FileInputStream(file);
            Workbook workbook = new HSSFWorkbook(fis);
            //只取第一个sheet
            Sheet sheet = workbook.getSheetAt(0);
            //第一行的数据封装
            XRow firstRow = new XRow();
            //取第一行
            Row row = sheet.getRow(sheet.getFirstRowNum());
            firstRow.setRowIndex(sheet.getFirstRowNum()+1);
            //取出头和尾
            short firstCellNum = row.getFirstCellNum();
            short lastCellNum = row.getLastCellNum();
            List<XCell> cells = new ArrayList<>();
            //取出所有的cell
            for (int i = firstCellNum; i < lastCellNum; i++) {
                Cell cell = row.getCell(i);
                //单元格的数据封装
                XCell xCell = new XCell();
                xCell.setCellIndex(i+1);
                //暂时使用string类型测试,可以详细的进行value分类
                xCell.setValue(cell.getStringCellValue());
                cells.add(xCell);
            }
            firstRow.setRowValue(cells);
    
            //遍历查看
            System.out.println("=====rowIndex===="+firstRow.getRowIndex());
            List<XCell> rowValue = firstRow.getRowValue();
            for (XCell xCell : rowValue) {
                System.out.println(xCell);
            }
    
            return firstRow;
        }
    
        /**
         * 以第一行为宽度获取其余的数据
         * @param file
         * @param firstRow
         * @return
         * @throws Exception
         */
        public static List<XRow> getOtherData(File file,XRow firstRow) throws Exception {
            //所有的行数据
            List<XRow> rows = new ArrayList<>();
    
            //获取 work
            FileInputStream fis = new FileInputStream(file);
            Workbook workbook = new HSSFWorkbook(fis);
            Sheet sheet = workbook.getSheetAt(0);
            int firstRowNum = sheet.getFirstRowNum();
            int lastRowNum = sheet.getLastRowNum();
            //第一行的列数
            int columnSize = firstRow.getRowValue().size();
            int firstCellIndex = firstRow.getRowValue().get(0).getCellIndex();
            int lastCellIndex = firstRow.getRowValue().get(columnSize-1).getCellIndex();
            //去掉第一行
            for (int i = firstRowNum+1; i < lastRowNum+1; i++) {
                //遍历所有的行
                XRow xRow = new XRow();
                xRow.setRowIndex(i+1);
                Row row = sheet.getRow(i);
                List<XCell> cells = new ArrayList<>();
                //以第一行为宽度,遍历所有的cell
                for (int j = firstCellIndex-1; j < lastCellIndex; j++) {
                    Cell cell = row.getCell(j);
                    XCell xCell = new XCell();
                    xCell.setCellIndex(j+1);
                    //暂时使用string类型测试,可以详细的进行value分类
                    xCell.setValue(cell.getStringCellValue());
                    cells.add(xCell);
                }
                xRow.setRowValue(cells);
                rows.add(xRow);
            }
    
            //遍历查看
            for (XRow row : rows) {
                int rowIndex = row.getRowIndex();
                List<XCell> rowValue = row.getRowValue();
                System.out.println("======rowIndex==="+rowIndex);
                for (XCell xCell : rowValue) {
                    System.out.println(xCell);
                }
            }
            return rows;
        }
    }
    
    jdbc的工具类
    public class DBUtil {
    
        private static String driver = "com.mysql.cj.jdbc.Driver";
        private static String ip = "127.0.0.1";
        private static String port = "3306";
        private static String db = "dev";
        private static String name = "root";
        private static String password = "112233";
        private static String tableName = "tableName";
    
        private static Connection getConnection() {
            Connection conn = null;
            try {
                Class.forName(driver);
                conn = DriverManager.getConnection(generateDBUrl(ip, port, db), name, password);
            } catch (ClassNotFoundException e) {
                System.out.println("can not load jdbc driver" + e);
            } catch (SQLException e) {
                System.out.println("get connection failure" + e);
            }
            return conn;
        }
    
        /**
         * 生成一个连接url
         * @param ip     地址
         * @param port   端口
         * @param dbname 数据库名
         * @return
         */
        private static String generateDBUrl(String ip, String port, String dbname) {
            StringBuilder sb = new StringBuilder();
            sb.append("jdbc:mysql://").append(ip);
            sb.append(":").append(port);
            sb.append("/").append(dbname);
            //sb.append("?useUnicode=true&amp;characterEncoding=utf-8&amp;autoreconnect=true&useSSL=false");
            sb.append("?useUnicode=true&characterEncoding=UTF-8&autoreconnect=true&useSSL=false&rewriteBatchedStatements=true&serverTimezone=GMT%2B8");
            return sb.toString();
        }
    
        /**
         * 关闭数据库连接
         * @param conn
         */
        private static void closeConnection(Connection conn) {
            if (conn != null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    
        /**
         * 1.创建数据库表
         * @param xRow 表格的列名作为数据库的列名的注释
         * @return 返回一个数据库的列名 column_x
         */
        public static List<String> createTable(XRow xRow) {
            Connection conn = getConnection();
            List<XCell> columnList = xRow.getRowValue();
            Statement stmt;
            List<String> dbColumnList = new ArrayList<>();
            try {
                StringBuilder sb = new StringBuilder();
                sb.append("CREATE TABLE ").append(tableName).append("(");
                sb.append("id BIGINT AUTO_INCREMENT COMMENT '主键' PRIMARY KEY, ");
                int index = 0;
                for (XCell colimn : columnList) {
                    index++;
                    dbColumnList.add("column" + index);
                    sb.append("column" + index + " ");
                    sb.append("varchar(200) null ");
                    if (index < columnList.size()) {
                        sb.append("COMMENT '" + colimn.getValue() + "', ");
                    } else {
                        sb.append("COMMENT '" + colimn.getValue() + "'");
                    }
                }
                sb.append(") ENGINE = InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;");
                stmt = conn.createStatement();
                if (0 == stmt.executeLargeUpdate(sb.toString())) {
                    System.out.println("成功创建表!");
                } else {
                    System.out.println("创建表失败!");
                }
                stmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
            } finally {
                closeConnection(conn);
            }
            //返回的是当前的列.
            return dbColumnList;
        }
    
        /**
         * 2.生成一条插入数据的SQL语句
         * @param columnList 数据库的列名,从createTable方法中获取
         * @return 返回一个SQL语句
         */
        private static String generateInsertSQL(List<String> columnList) {
            List<String> columnDataList = new ArrayList<>();
            for (int i = 0; i < columnList.size(); i++) {
                columnDataList.add("?");
            }
            String columnNameStr = Joiner.on(",").join(columnList);
            String columnDataStr = Joiner.on(",").join(columnDataList);
            StringBuilder sb = new StringBuilder();
            sb.append("insert into ");
            sb.append(tableName);
            sb.append(" (");
            sb.append(columnNameStr);
            sb.append(") values(");
            sb.append(columnDataStr);
            sb.append(")");
            return sb.toString();
        }
    
        /**
         * 插入一个SQL
         *
         * @param columnList 列名
         * @param row        行数据封装类
         * @return
         */
        public static int insertRow(List<String> columnList, XRow row) {
            String insertSQL = generateInsertSQL(columnList);
            int a = 0;
            Connection conn = getConnection();
            try {
                PreparedStatement pst = conn.prepareStatement(insertSQL);
                if (row != null) {
                    List<XCell> rowValue = row.getRowValue();
                    for (int i = 0; i < rowValue.size(); i++) {
                        XCell xCell = rowValue.get(i);
                        pst.setString(i + 1, xCell.getValue());
                    }
                }
                a = pst.executeUpdate();
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                closeConnection(conn);
            }
            return a;
        }
    
        /**
         * 3.批量插入SQL语句
         * @param columnList 列名
         * @param otherData  批量行数据
         * @return
         */
        public static int[] insertRowBatch(List<String> columnList, List<XRow> otherData) {
            String insertSQL = generateInsertSQL(columnList);
            int[] a = null;
            Connection conn = getConnection();
    
            try {
                PreparedStatement pst = conn.prepareStatement(insertSQL);
                for (XRow rows : otherData) {
                    List<XCell> rowValue = rows.getRowValue();
                    for (int i = 0; i < rowValue.size(); i++) {
                        XCell xCell = rowValue.get(i);
                        pst.setString(i + 1, xCell.getValue());
                    }
                    pst.addBatch();
                }
                long startTime = System.currentTimeMillis();
                a = pst.executeBatch();
                long endTime = System.currentTimeMillis();
                System.out.println("插入用时" + (endTime - startTime));
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                closeConnection(conn);
            }
            //返回-2是执行成功
            return a;
        }
    
        /**
         * 4.获取数据库下的所有表名
         */
        public static List<String> getDbAllTables() {
            /*t_roles  t_user  tablename  tablename1  uf_1122  sys_config*/
            List<String> tableNames = new ArrayList<>();
            Connection conn = getConnection();
            ResultSet rs = null;
            try {
                //获取数据库的元数据
                DatabaseMetaData db = conn.getMetaData();
                //从元数据中获取到所有的表名
                rs = db.getTables(null, null, null, new String[]{"TABLE"});
                while (rs.next()) {
                    tableNames.add(rs.getString(3));
                }
            } catch (SQLException e) {
                e.printStackTrace();
            } finally {
                try {
                    rs.close();
                    closeConnection(conn);
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            return tableNames;
        }
    }
    

    注释

    1.先将excel中的第一行表头读取出来,作为数据库的字段的注释,因为最好不要使用中文的字段,使用column_x作为字段名.实际代表类型是注释中的内容.
    2.使用表头数据创建数据库的表,表创建成功后方法返回表的字段.用于数据的插入和更新.
    3.批量生成insert SQL将数据写入新创建的表中.

    代码需要改进地方

    1.读取excel的时候需要根据文件类型判断是xls还是用xlxs类型,这两种类型使用的POI实现类不通.
    2.读取表头和读取数据可以合并到一起,看情况.
    3.读取单元格的时候,需要判断cell的具体类型,我为了测试,只是使用了string,实际可以进行类型的判断.

    测试

    表格内容:
    在这里插入图片描述
    测试用例

            //获取第一行作为表的注释
            XRow firstRowData = ReadExcel.getFirstRowData(new File("d:\\test.xls"));
    
            //获取数据作为表的内容
            List<XRow> otherData = ReadExcel.getOtherData(new File("d:\\test.xls"), firstRowData);
    
            //创建数据库表,返回表的字段
            List<String> columnList = DBUtil.createTable(firstRowData);
    
            //插入数据
            int[] ints = DBUtil.insertRowBatch(columnList, otherData);
    

    效果
    在这里插入图片描述
    只取出了与表头相同宽度的数据.

    展开全文
  • 如何在jsp上查询并显示数据库mysql的数据表格

    万次阅读 多人点赞 2017-08-26 11:27:34
    3.Servlet与数据库建立连接,并且在Servlet输入 sql代码与用户输入的信息 去查询Mysql数据库里的表格。 4.在Servlet中接收数据库查询到的信息。 5.再通过跳转跳转到一个新的jsp页面中,并在页面中输出查询出来的...

    需要在jsp上实现查询数据库的表格(就是通过用户输入查询表格)

    总体的思路:

    1.首先用户在jsp中输入需要查询的对象并跳转Servlet。

    2.Servlet在后台接收到数据。

    3.Servlet与数据库建立连接,并且在Servlet输入  sql代码与用户输入的信息  去查询Mysql数据库里的表格。

    4.在Servlet中接收数据库查询到的信息。

    5.再通过跳转跳转到一个新的jsp页面中,并在页面中输出查询出来的表格。

    总体上的思路已经写明了,那么接下来我们就按照步骤一步一步往下做。

    我们需要的有:

    一个用于输入的jsp页面 ,

    一个用于建立连接和接收数据的Servlet,

    一个用于打印数据的jsp页面

     一.首先写一个用于接收用户数据的表单

    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Insert title here</title>
    </head>
    <body>
    <table>
    <form action="FirstSql"> 这里的FirstSql是连接到下面的Servlet的
    <input type="text" value="1" name="idcard_w">输入框
    <input type="submit" name="Submit">提交表单按钮
    </form>
    </table>
    
    </body>
    </html>FirstSql是连接到下面的Servlet的
    <input type="text" value="1" name="idcard_w">输入框
    <input type="submit" name="Submit">提交表单按钮
    </form>
    </table>
    
    </body>
    </html>

    效果如下

    二.创建一个Servlet

       首先这里需要mysql数据库的数据,在Navicat中编写sql代码获取数据表格

    SELECT student.`name`,contact_desc.`desc`,contact_ext.contact
    FROM student
    JOIN contact_ext ON contact_ext.idcard=student.idcard
    JOIN contact_desc ON contact_desc.contact_type=contact_ext.contact_type
    WHERE student.idcard=;(这里需要查询的ID暂时不写,是需要用户输入的)

    查询以后的结果是这样的

    然后编写创建Servlet

    package com.servlet;
    
    import java.io.IOException;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.Statement;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    import java.util.Scanner;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    @WebServlet("/FirstSql")
    public class FirstSql extends HttpServlet{
    	private static String jdbcDriver = "com.mysql.jdbc.Driver";// mysql连接驱动,无需改
    	
    	public static String jdbcUrl = "jdbc:mysql://localhost:3306/zdy";
    	public static String jdbcUser = "root";//数据库用户名
    	public static String jdbcPwd = "1111";//数据库密码
    	private static Connection conn;
    	public static Statement st;
    	
    	static {
    		try {
    			Class.forName(jdbcDriver);// 加载mysql驱动类
    			conn = DriverManager.getConnection(jdbcUrl, jdbcUser, jdbcPwd);
    			// 驱动利用驱动地址,数据库用户名,密码创建连接
    			st = conn.createStatement();
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
    	//以上基本是固定格式的
    	
    	
    	
    	protected void service(HttpServletRequest request, HttpServletResponse response) //
    			throws ServletException, IOException {
    		List<Map> list =new ArrayList<Map>();//创建list集合用于存入map的键值对集合
    		
    		String idcard_w = request.getParameter("idcard_w");//接收到前台传来的数据
    		System.out.println(idcard_w);
    	
    		
    		try {
    			String sql ="SELECT student.`name`,contact_desc.`desc`,contact_ext.contact\r\n"+
    					"FROM student\r\n"+
    					"JOIN contact_ext ON contact_ext.idcard=student.idcard\r\n"+
    					"JOIN contact_desc ON contact_desc.contact_type=contact_ext.contact_type\r\n"+
    					"WHERE student.idcard="+idcard_w;
    			//复制之前的sql代码    每行必须要转换为字符串然后加上换行符
    			//						idcard_w是用户传入的数据用于查询用户需要的信息
    			
    			ResultSet rs = st.executeQuery(sql);
    			//从数据库读取的内容,返回一个结果集。
    			System.out.println("获取数据");
    			while (rs.next()) {
    				String name = rs.getString("name");
    				String desc = rs.getString("desc");
    				String contact = rs.getString("contact");
    				//获取用循环接收数据库的表格信息
    				
    				Map map = new HashMap(); 
    				map.put("name", name);			
    				map.put("desc", desc);		
    				map.put("contact", contact);
    				//用键值对存入到map集合中
    				System.out.println(map);
    				list.add(map);//在将map集合对象存入list集合
    				System.out.println("放入集合");
    				for (Map map_1 :list) {
    					System.out.println(map_1);
    				}//在打印台遍历出数据查看是否有错误
    				
    			}//遍历结果集
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	
    
    		System.out.println("跳转");
    		request.setAttribute("key_list",list);//将list集合数据放入到request中共享
    		request.getRequestDispatcher("/index.jsp").forward(request, response);
    		//跳转到index.jsp页面
    	}
    }

    三.跳转到的index.jsp中,将表格打印出来

    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Insert title here</title>
    <style>
    th, tr, td, table {
    	border: 1px solid red;
    }
    </style>
    </head>
    <body>
    	<table>
    		<tr>
    			<th>name</th>
    			<th>desc</th>
    			<th>contact<th>
    		</tr>
    
    		<c:forEach items="${key_list}" var="usr" varStatus="idx">
            <tr>
    				<td>${usr.name}</td><td>${usr.desc}</td> <td>${usr.contact}</td> 
    			</tr>
    		</c:forEach>
    
    
    
    
    	</table>
    
    </body>
    </html>

    到这里程序已经基本完成,剩下就是测试了

    在这里输入1提交

    页面则会跳转到如下界面

    如果提交2的话


     

    展开全文
  • 以mysql为例,首先确定已经正确安装了mysql 点击idea右侧 Database 点击绿色“+”号 填写相关信息 最后展示
  • 如果要让代码获取服务器上的数据,要打开pycharm的ssh功能,打开后才能让pycharm直接连接服务器,并允许脚本在本地运行,但数据可以产生在服务器上。但是只有pycharm专业版的才有此功能,如果你安装的是试用版,需要...
  • ASP实现在WEB中显示电子表格数据 显示数据及生成HTML表格
  • Layui 表格显示数据

    千次阅读 2020-09-08 15:23:12
    连接数据库里的数据需要 使用 Models 就要先把Models实例化 如: 模型Models 里面的数据是从数据库SQL里面传过来的 SchoolMangeSystemEntites就是Models的name名称 通过这个名称 声明对象来接收 Mo
  • Qt Tablewidget表格数据的导出和导入

    千次阅读 多人点赞 2021-02-07 14:46:01
    QT里面自带的TableWidget控件可以实现表格显示的功能,刚开始学习TableWidget,只是自己提前创建好表格,规定好数据,但真正的软件不会让我们规定好数据格式。下面我们一起来看一下,如何导入xls文件,自动生成表格...
  • (如果你觉得这里不好看,你可以直接往下拖到你进入正题部分) 在进入正题前,先来讲讲自己的经历...就连用什么关键词搜索都不知道,但是我知道,按照自己的想法来,开始我这这么搜索的:layui表格数据 java获得数据...
  • 使用Excel功能抓取网页表格数据

    万次阅读 2020-10-21 18:22:40
    这上面这个表格之中,如果我采用复制,网页的表格然后粘贴在了Excel由于数据量过大,显的十分麻烦,下面我们简单介绍一个神奇当然就是Excel,注意是微软的版本,目前wps目前还没有当前这个功能。 ...
  • Excel表格数据丢失,怎样能恢复?

    千次阅读 2018-02-01 11:37:17
    Excel是工作中使用最多的表格程序,如果不小心遇到一些突然断电等意外的情况,工作中的数据没有来得及保存,这样表格数据还能会在吗,表格数据丢失了可以恢复吗?不用担心,小编告诉大家这样的情况下我们是可以丢失...
  • layui数据表格与java后台数据交互

    千次阅读 2018-10-07 21:56:33
    layui数据表格与java后台数据交互 &amp;amp;amp;lt;table class=&amp;amp;quot;layui-hide&amp;amp;quot; id=&amp;amp;quot;test&amp;amp;quot; lay-filter=&amp;amp;quot;test&amp...
  • 从嵌套的json数据获取表格数据列 $(document).ready(function() { $('#example').dataTable( { "processing": true, "ajax": "data/objects_deep.txt", "columns": [ ...
  • 这段时间项目前端使用了layui框架,在layui的table数据展示上花了挺长的时间。记录下解决过程: 首先后台返回的数据格式必须严格遵守官方要求的JSON数据格式 http://fly.layui.com/jie/16441/ ...
  • TableDataSource 表格数据重新加载

    千次阅读 2015-09-22 18:00:11
    在FastReport中我们通常会通过自定义的连接与过滤条件(sql语句)来初始化表格数据,使用方法如下:  //strCurTableName为新建数据源中所添加的表格的名称  DataSourceBase columnData = Report.GetDataSource...
  • 数据可视化-Tableau-连接数据

    千次阅读 2018-05-06 13:38:49
    连接数据 开始使用 Tableau。第一步是加载一些数据。 如果尚未启动 Tableau 的话,请先启动。你应该看到如下所示的界面(如果版本是 10): 你将在左侧边栏中看到可以连接数据源。对于文件资源,你可以连接到...
  • Navicat导入大量excel表格数据

    千次阅读 2019-07-22 10:25:50
    如何使用Navicat导入大量excel表格数据 本人尝试过多种方式,首先是直接导入excel,由于要导入的数据有二十几万行,而最终导进去的只有几万行。 因此,就尝试了将.xlsx文件另存为了.csv文件,就导入成功了。有基础的...
  • .net 数据表格显示控件

    千次阅读 2014-06-13 11:57:18
    通过使用 GridView控件,您可以显示、编辑、删除、排序和翻阅多种不同的数据源(包括数据库、XML 文件和公开数据的业务对象)中的表格数据。  显示表格数据是软件开发中的一个周期性任务。ASP.NET 提供了许多工具...
  • LayUI 数据表格 URL

    千次阅读 2020-04-10 13:51:09
    LayUI数据表格–URL URL LayUI数据表格URL默认Get请求 aspx请求cs url:请求链接; method:以何种方式请求; where:请求参数
  • python抓取网页表格数据

    千次阅读 2018-07-23 16:03:55
    小白初入python,在博客上借鉴了一些源码,然后改进了一下,选了湖大硕士招生分数线的一个表格进行爬取。成功是成功了,咳咳,还有很多改进的地方。啥也不说了,直接上源码~ # -*- coding:utf-8 -*- # The author ...
  • 如何使用ArcGIS连接Excel表格

    万次阅读 2018-05-21 14:08:01
    在使用ArcGIS做相关分析时候经常需要一些外部的属性数据,如果挨个输入到属性表内是十分不明智的,这时候可以使用ArcGIS的连接功能连接到对应的表格,这里讲解一下具体的操作,希望能够对大家有所帮助。 步骤 第一...
  • 这几天在做一个物料出入库的编码设计,需要从数据库拿到数据,并以表格形式呈现在网页上,后期还需要对数据进行分页,实现打印操作。 基本思路如下: 1.连接数据库; 2.从数据库取出数据展示在jsp页面上; 3....
  • 用thinkphp 在网页上实现form表格(假设有10行数据)的增删改查,连接到数据库中 应该怎么写 先在Navicat中写10行数据 内容随意,然后用thinkphp写代码 实现在页面上 求大神帮忙。。。。
  • ArcMap 打开excel表格数据不显示

    千次阅读 2019-05-14 14:39:24
    问题描述:excel表格数据完整,用Arcmap 导入打开后发现经度一列数据不显示,如下图: 图1 :excel 数据: 图2:导入ArcMap打开表后 解决方式:通过将列修改成数字,文本后始终不能解决问题。最后发现原因...
  • Excel表格数据丢失如何快速恢复?

    千次阅读 2018-02-24 16:43:00
    Excel是工作中使用最多的表格程序,如果不小心遇到一些突然断电等意外的情况,工作中的数据没有来得及保存,这样表格数据还能会在吗,表格数据丢失了可以恢复吗? EasyRecovery数据恢复软件是一款功能十分强大而全面...
  • 代码部分: // (1) Open the database connection $... //数据连接部分记得改回自己的用户名跟密码 //以上的函数第一个参数为你数据库服务器的地址,第二个参数为用户名,第三个参数为密码 // (2) Select th
  • 监听表格数据变化 终于进入到JTable的重头戏了,监听在任何Java项目中都是非常重要的,监听带来的一系列的操作也有时候非常复杂 在Excel表格中,当表格中的一个单元格的数据发生变化时,与之相关的数据也会同时...
  • LayUI数据表格查询与重载

    千次阅读 2020-02-10 15:14:41
    服务端返回查询结果,前端数据表格方法级渲染的重载。 如果未输入数据点击查询按钮,弹窗提示用户输入数据。 前端数据展示与重载 编写输入框与查询按钮,监听按钮点击事件。 <div class="layui-inline layui-sho...
  • 在myeclipse中连接mysql查询数据

    千次阅读 2014-06-27 17:29:27
    代码如下: ... import java.sql.*; public class ComInfluence { ... // 2、提供JDBC连接的URL... // 连接URL定义了连接数据库时的协议、子协议、数据源标识。  // 书写形式:协议:子协议:数据源标识  // 协议:...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 218,662
精华内容 87,464
关键字:

怎么连接表格数据