精华内容
下载资源
问答
  • java Web 读取数据库存储图片java Web 读取数据库存储图片
  • java获取数据库MetaData

    千次阅读 2020-10-30 19:31:22
    java获取数据库MetaData ​ 元数据(MetaData),即数据的描述信息的数据(表)。数据库的表的表名,表的属性名,表的存储位置,表的列数啊等等都是表的描述信息,而这些描述信息就是元数据啦。 1.DatabaseMetaData类...

    java获取数据库MetaData

    ​ 元数据(MetaData),即数据的描述信息的数据(表)。数据库的表的表名,表的属性名,表的存储位置,表的列数啊等等都是表的描述信息,而这些描述信息就是元数据啦。

    1.DatabaseMetaData类

    该类是数据库的描述对象通过Connection对象的getMetaData()方法获取。

    public void testDatabaseMetaData() throws SQLException {
    		
            String url = "jdbc:mysql://127.0.0.1:3306/test?useSSL=false&serverTimezone=UTC";
            String user = "root" ;    
            String password = "root";
            //这里随便创建一个连接
            Connection conn= DriverManager.getConnection(url,user,password);
            DatabaseMetaData dbMetaData =  conn.getMetaData();
            //获取数据库产品名称
            String productName = dbMetaData.getDatabaseProductName();
            //获取数据库版本号
            String productVersion = dbMetaData.getDatabaseProductVersion();
            //获取数据库用户名
            String userName = dbMetaData.getUserName();
            //获取数据库连接URL
            String userUrl = dbMetaData.getURL();
            //获取数据库驱动
            String driverName = dbMetaData.getDriverName();
            //获取数据库驱动版本号
            String driverVersion = dbMetaData.getDriverVersion();
            //查看数据库是否允许读操作
            boolean isReadOnly = dbMetaData.isReadOnly();
            //查看数据库是否支持事务操作
            boolean supportsTransactions = dbMetaData.supportsTransactions();
    }
    

    2.ParameterMetaData类

    这个是参数的元数据对象,通过getParameterMetaData()获取

    public void testParameterMetaData() throws SQLException {
    		
            String url = "jdbc:mysql://127.0.0.1:3306/test?useSSL=false&serverTimezone=UTC";
            String user = "root" ;    
            String password = "root";
            //这里随便创建一个连接
            Connection conn= DriverManager.getConnection(url,user,password);
            String sql = "SELECT * FROM student WHERE name = ?;";  
           	preparedStatement ps = conn.prepareStatement(sql);
           	ParameterMetaData paramMetaData = st.getParameterMetaData();
           	//获取参数个数
           	int paramCount = paramMetaData.getParameterCount();
           	//获取参数类型(参数下标以1开始)
            String paramTypeName = paramMetaData.getParameterTypeName(1);
    }
    

    3.ResultSetMetaData类

    数据集的元数据类,通过ResultSet的getMetaData()获取。

    public void testParameterMetaData() throws SQLException {
    		
            String url = "jdbc:mysql://127.0.0.1:3306/test?useSSL=false&serverTimezone=UTC";
            String user = "root" ;    
            String password = "root";
            //这里随便创建一个连接
            Connection conn= DriverManager.getConnection(url,user,password);
            String sql = "SELECT * FROM student WHERE name = ?;";  
           	preparedStatement ps = conn.prepareStatement(sql);
            ps.setString(1,"Tom");			//"Tom"为传入值
            ResultSet rs = ps.executeQuery();
            ResultSetMetaData rsm = rs.getMetaData();
            //获取列数
            int count = metaData.getColumnCount();
            //获取列名和列类型
            for(int i =1;i<=count;i++)
            	System.out.println("列名"+rsm.getColumnName(i)+"类型"+rsm.getColumnTypeName(i))
    
    }
    
    展开全文
  • Java获取数据库属性信息,使用DatabaseMetaData对象获取数据源相关信息。还可获取索引名、获取存储过程信息、获取存储过程列信息、输出存储过程列信息等。
  • Java存取数据库中图片(二进制文件).HTML Java存取数据库中图片(二进制文件).HTML Java存取数据库中图片(二进制文件).HTML
  • java实现数据库存储图片,设定禁止上传的文件(通过扩展名限制),禁止上传带有exe,bat
  • Java获取数据库对SQL的支持信息,加载驱动程序,建立连接,获取数据源相关信息,获取数据库支持的数学函数,获取数据库支持的字符串函数,获取数据库支持的系统函数,获取数据库支持的日期时间函数,数据库支持的...
  • java存储图片数据库中,简单易懂。用最简单的代码实现。
  • Java获取数据库详细信息

    千次阅读 2019-07-04 10:59:37
    最近有同事问我怎么获取数据库中某数据表的某一列字段名称及数据类型,这种问题我还是第一次听别人问起,不过既然有,就应该得到解决。 当你使用和学习JDK的时候,可以查看并学习它所提供给你的两个...

    转自:该地址
    最近有同事问我怎么获取数据库中某数据表的某一列字段名称及数据类型,这种问题我还是第一次听别人问起,不过既然有,就应该得到解决。
    当你使用和学习JDK的时候,可以查看并学习它所提供给你的两个ResultSetMetaData
    和DataBaseMetaData类的源码并很好的了解它们的实现原理和思路,JDBC中提供有两种源数据,一种是数据库源数据,另一种是ResultSet源数据。这些源数据就是描述存储用户数据的容器的数据结构。其中ResultSetMetaData类完成了查询结果信息和结果中的列的各种信息。下面我就以ResultSetMetaData为例,简单的罗列它的使用方法以及它内部的方法的使用。
    首先,建立一张表并起名为users,表结构描述如下:
    字段描述 字段名称 是否为空 是否主键
    用户编号 id Not Null P
    用户名称 userName Not Null
    用户密码 password Not Null
    你也可以通过DLL执行下面脚本:(本人使用Mysql)
    CREATE TABLE users (
    id varchar(32) NOT NULL,
    userName varchar(20) NOT NULL,
    password varchar(20) NOT NULL,
    PRIMARY KEY (id),
    UNIQUE KEY id (id)
    ) ENGINE=InnoDB DEFAULT CHARSET=gbk;
    然后向该表中插入几条数据。
    最后,新建一个测试类名为TestDemo.java,源代码如下:

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.PreparedStatement;
    import java.sql.ResultSetMetaData;
    import java.sql.SQLException;
    
    public class TestDemo {
    	public static Connection getConnection() {
    		Connection conn = null;
    		try {
    			Class.forName("com.mysql.jdbc.Driver");
    			String url = "jdbc:mysql://localhost:3306/struts2Demo";
    			String user = "root";
    			String pass = "123456";
    			conn = DriverManager.getConnection(url, user, pass);
    		} catch (ClassNotFoundException e) {
    			e.printStackTrace();
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    		return conn;
    	}
    
    	public static void main(String[] args) {
    		Connection conn = getConnection();
    		String sql = "select * from users";
    		PreparedStatement stmt;
    		try {
    			stmt = conn.prepareStatement(sql);
    			ResultSet rs = stmt.executeQuery(sql);
    			ResultSetMetaData data = rs.getMetaData();
    			while (rs.next()) {
    				for (int i = 1; i <= data.getColumnCount(); i++) {
    					// 获得所有列的数目及实际列数
    					int columnCount = data.getColumnCount();
    					// 获得指定列的列名
    					String columnName = data.getColumnName(i);
    					// 获得指定列的列值
    					String columnValue = rs.getString(i);
    					// 获得指定列的数据类型
    					int columnType = data.getColumnType(i);
    					// 获得指定列的数据类型名
    					String columnTypeName = data.getColumnTypeName(i);
    					// 所在的Catalog名字
    					String catalogName = data.getCatalogName(i);
    					// 对应数据类型的类
    					String columnClassName = data.getColumnClassName(i);
    					// 在数据库中类型的最大字符个数
    					int columnDisplaySize = data.getColumnDisplaySize(i);
    					// 默认的列的标题
    					String columnLabel = data.getColumnLabel(i);
    					// 获得列的模式
    					String schemaName = data.getSchemaName(i);
    					// 某列类型的精确度(类型的长度)
    					int precision = data.getPrecision(i);
    					// 小数点后的位数
    					int scale = data.getScale(i);
    					// 获取某列对应的表名
    					String tableName = data.getTableName(i);
    					// 是否自动递增
    					boolean isAutoInctement = data.isAutoIncrement(i);
    					// 在数据库中是否为货币型
    					boolean isCurrency = data.isCurrency(i);
    					// 是否为空
    					int isNullable = data.isNullable(i);
    					// 是否为只读
    					boolean isReadOnly = data.isReadOnly(i);
    					// 能否出现在where中
    					boolean isSearchable = data.isSearchable(i);
    					System.out.println(columnCount);
    					System.out.println("获得列" + i + "的字段名称:" + columnName);
    					System.out.println("获得列" + i + "的字段值:" + columnValue);
    					System.out.println("获得列" + i + "的类型,返回SqlType中的编号:" + columnType);
    					System.out.println("获得列" + i + "的数据类型名:" + columnTypeName);
    					System.out.println("获得列" + i + "所在的Catalog名字:" + catalogName);
    					System.out.println("获得列" + i + "对应数据类型的类:" + columnClassName);
    					System.out.println("获得列" + i + "在数据库中类型的最大字符个数:" + columnDisplaySize);
    					System.out.println("获得列" + i + "的默认的列的标题:" + columnLabel);
    					System.out.println("获得列" + i + "的模式:" + schemaName);
    					System.out.println("获得列" + i + "类型的精确度(类型的长度):" + precision);
    					System.out.println("获得列" + i + "小数点后的位数:" + scale);
    					System.out.println("获得列" + i + "对应的表名:" + tableName);
    					System.out.println("获得列" + i + "是否自动递增:" + isAutoInctement);
    					System.out.println("获得列" + i + "在数据库中是否为货币型:" + isCurrency);
    					System.out.println("获得列" + i + "是否为空:" + isNullable);
    					System.out.println("获得列" + i + "是否为只读:" + isReadOnly);
    					System.out.println("获得列" + i + "能否出现在where中:" + isSearchable);
    				}
    			}
    		} catch (SQLException e) {
    			System.out.println("数据库连接失败");
    		}
    	}
    }
    

    就这么简单,希望通过该简单的代码能给读者一些帮助和启迪吧!

    展开全文
  • 重点内容 1.使用两种重要的Stream分别为...FileOutputStream:从数据库获取图片 2.代码演示package com.ReadOrWritePicture; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream;

    重点内容
    1.使用两种重要的Stream分别为:

    • FileInputStream:向数据库插入图片
    • FileOutputStream:从数据库获取图片

    2.代码演示

    package com.ReadOrWritePicture;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    public class PictureReadAndRead {
    
        //1.连接数据库
        Connection conn=null;
        public PictureReadAndRead () {
            try {
                String url="jdbc:mysql://localhost:3306/test";
                Class.forName("com.mysql.jdbc.Driver");
                conn= DriverManager.getConnection(url,"root","root");     
            }
            catch(SQLException e) {
                e.printStackTrace();
            }
            catch(ClassNotFoundException ce) {
                ce.printStackTrace();
            }
        }
    
        //2.向数据库中添加一条记录
        public void Insert() {
            try {
                String sql="insert into tb_photo(name,photo)values(?,?)";
                PreparedStatement ps=conn.prepareStatement(sql);
                File f =new File("D:/1.png");
    
    
                FileInputStream input= new FileInputStream(f);
                ps.setString(1,"杰克逊");
                ps.setBinaryStream(2, input,(int)f.length());
                ps.executeUpdate();
                System.out.println("插入成功");
                ps.close();
                input.close();
            }
            catch(SQLException e) {
                  System.out.println("SQL异常");
                e.printStackTrace();
            }
            catch(IOException ie) {
                  System.out.println("IO异常");
                ie.printStackTrace();
            }
        }
    
        //3.从数据库中读取图片数据
        public void Read() {
            try {
                String sql="select photo from  tb_photo where id=?";
                PreparedStatement ps=conn.prepareStatement(sql);
                ps.setInt(1, 1);
                ResultSet rs=ps.executeQuery();
                byte [] b=new byte[10240*10];
    
                while(rs.next()) {
                    //获取photo字段的图片数据
                    InputStream in=rs.getBinaryStream("photo");
                    //将数据存储在字节数组b中
                    in.read(b);
                    //从数据库获取图片保存的位置
                    File f=new File("D:/2.jpg ");
                    FileOutputStream out=new FileOutputStream(f);
                    out.write(b, 0, b.length);
                    out.close();
                    System.out.println("成功获取图片");
                }
    
            }
            catch(SQLException e) {
                e.printStackTrace();
            }
            catch(IOException ie) {
                ie.printStackTrace();
            }
        }
    
        public static void main(String[] args) {
    
            PictureReadAndRead  picture=new PictureReadAndRead ();
            picture.Insert();
            picture.Read();
        }
    
    }
    展开全文
  • Java获取数据库表结构

    千次阅读 2020-09-01 23:33:18
    虽然各个DB厂商查询数据库表结构的语句不同,但是Java中通过封装,可以使用共同的API来获取。 各个具体的DB厂商有各自的实现,只需导入相应的包即可。

    Java能够操作数据库,当然能够获取到数据库的表结构。
    虽然各个DB厂商查询数据库表结构的语句不同,但是Java中通过封装,可以使用共同的API来获取。
    各个具体的DB厂商有各自的实现,只需导入相应的包即可。

    代码

    废话不多说,直接看代码。

    public static void main(String[] args) throws Exception {
       String driver = "com.mysql.cj.jdbc.Driver";
        String url = "jdbc:mysql://localhost:3306/book_sc?serverTimezone=GMT";
        String user = "root";
        String password = "root";
    
        printTableStructure(driver, url, user, password);
    }
    
    /**
     * 打印所有表结构
     *
     * @param driver   driver
     * @param url      url
     * @param user     user
     * @param password password
     * @throws Exception exception
     */
    private static void printTableStructure(String driver, String url, String user, String password) throws Exception {
        Class.forName(driver);
        Connection connection = DriverManager.getConnection(url, user, password);
    
        DatabaseMetaData metaData = connection.getMetaData();
        // 获取所有表
        ResultSet tableResultSet = metaData.getTables(null, null, "order%", new String[]{"TABLE"});
        while (tableResultSet.next()) {
            String tableName = tableResultSet.getString("TABLE_NAME");
            System.out.println("table:" + tableName);
    
            // 获取表字段结构
            ResultSet columnResultSet = metaData.getColumns(null, "%", tableName, "%");
            while (columnResultSet.next()) {
                // 字段名称
                String columnName = columnResultSet.getString("COLUMN_NAME");
                // 数据类型
                String columnType = columnResultSet.getString("TYPE_NAME");
                // 字段长度
                int datasize = columnResultSet.getInt("COLUMN_SIZE");
                // 小数部分位数
                int digits = columnResultSet.getInt("DECIMAL_DIGITS");
                // 是否可为空 1代表可空 0代表不可为空
                int nullable = columnResultSet.getInt("NULLABLE");
                // 描述
                String remarks = columnResultSet.getString("REMARKS");
                System.out.println(columnName + " " + columnType + " " + datasize + " " + digits + " " + nullable + " " + remarks);
            }
            System.out.println("=================================");
        }
    }
    
    

    说明

    DatabaseMetaData的getTable方法可以获取表信息,代码中获取的是 order开头的所有表,打印表名。
    其中关于表,可以获得如下信息:

    • TABLE_CAT String => 表类别(可为 null)
    • TABLE_SCHEM String => 表模式(可为 null)
    • TABLE_NAME String => 表名称
    • TABLE_TYPE String => 表类型。典型的类型是 “TABLE”、“VIEW”、“SYSTEM TABLE”、“GLOBAL TEMPORARY”、“LOCAL TEMPORARY”、“ALIAS” 和 “SYNONYM”。
    • REMARKS String => 表的解释性注释
    • TYPE_CAT String => 类型的类别(可为 null)
    • TYPE_SCHEM String => 类型模式(可为 null)
    • TYPE_NAME String => 类型名称(可为 null)
    • SELF_REFERENCING_COL_NAME String => 有类型表的指定 “identifier” 列的名称(可为 null)
    • REF_GENERATION String => 指定在 SELF_REFERENCING_COL_NAME 中创建值的方式。这些值为 “SYSTEM”、“USER” 和 “DERIVED”。(可能为 null)

    DatabaseMetaData的getColumns方法可以获取表字段信息,代码中分别获取其名称、类型、长度等信息。
    其中关于字段,可以获得如下信息:

    • TABLE_CAT String => 表类别(可为 null)
    • TABLE_SCHEM String => 表模式(可为 null)
    • TABLE_NAME String => 表名称
    • COLUMN_NAME String => 列名称
    • DATA_TYPE int => 来自 java.sql.Types 的 SQL 类型
    • TYPE_NAME String => 数据源依赖的类型名称,对于 UDT,该类型名称是完全限定的
    • COLUMN_SIZE int => 列的大小。
    • BUFFER_LENGTH 未被使用。
    • DECIMAL_DIGITS int => 小数部分的位数。对于 DECIMAL_DIGITS 不适用的数据类型,则返回 Null。
    • NUM_PREC_RADIX int => 基数(通常为 10 或 2)
    • NULLABLE int => 是否允许使用 NULL。
    • columnNoNulls - 可能不允许使用 NULL 值
    • columnNullable - 明确允许使用 NULL 值
    • columnNullableUnknown - 不知道是否可使用 null
    • REMARKS String => 描述列的注释(可为 null)
    • COLUMN_DEF String => 该列的默认值,当值在单引号内时应被解释为一个字符串(可为 null)
    • SQL_DATA_TYPE int => 未使用
    • SQL_DATETIME_SUB int => 未使用
    • CHAR_OCTET_LENGTH int => 对于 char 类型,该长度是列中的最大字节数
    • ORDINAL_POSITION int => 表中的列的索引(从 1 开始)
    • IS_NULLABLE String => ISO 规则用于确定列是否包括 null。
    • YES — 如果参数可以包括 NULL
    • NO — 如果参数不可以包括 NULL
    • 空字符串 — 如果不知道参数是否可以包括 null
    • SCOPE_CATLOG String => 表的类别,它是引用属性的作用域(如果 DATA_TYPE 不是 REF,则为 null)
    • SCOPE_SCHEMA String => 表的模式,它是引用属性的作用域(如果 DATA_TYPE 不是 REF,则为 null)
    • SCOPE_TABLE String => 表名称,它是引用属性的作用域(如果 DATA_TYPE 不是 REF,则为 null)
    • SOURCE_DATA_TYPE short => 不同类型或用户生成 Ref 类型、来自 java.sql.Types 的 SQL 类型的源类型(如果 DATA_TYPE 不是 DISTINCT 或用户生成的 REF,则为 null)
    • IS_AUTOINCREMENT String => 指示此列是否自动增加
    • YES — 如果该列自动增加
    • NO — 如果该列不自动增加
    • 空字符串 — 如果不能确定该列是否是自动增加参数
    • COLUMN_SIZE 列表示给定列的指定列大小。对于数值数据,这是最大精度。对于字符数据,这是字符长度。对于日期时间数据类型,这是 String 表示形式的字符长度(假定允许的最大小数秒组件的精度)。对于二进制数据,这是字节长度。对于 ROWID 数据类型,这是字节长度。对于列大小不适用的数据类型,则返回 Null。

    关于上述两个方法的入参,参考如下说明:

    • catalog - 类别名称;它必须与存储在数据库中的类别名称匹配;该参数为 “” 表示获取没有类别的那些描述;为 null 则表示该类别名称不应该用于缩小搜索范围
    • schemaPattern - 模式名称的模式;它必须与存储在数据库中的模式名称匹配;该参数为 “” 表示获取没有模式的那些描述;为 null 则表示该模式名称不应该用于缩小搜索范围
    • tableNamePattern - 表名称模式;它必须与存储在数据库中的表名称匹配
    • columnNamePattern - 列名称模式;它必须与存储在数据库中的列名称匹配
    展开全文
  • java 数据库中图片文件的存取 java 数据库中图片文件的存取 java 数据库中图片文件的存取
  • java数据库存储图片

    2010-04-25 14:00:51
    java操作sql数据库。把图片转换成二进制保存、二进制转换成图片保存的例子
  • java获取数据库连接对象

    千次阅读 2016-11-06 13:29:25
    javaweb连接数据库
  • Java数据库中存储时间

    千次阅读 2019-01-05 17:09:14
    首先解释一下,数据库中的时间类型分为很多种,这里只是简单介绍date与datetime 主要的区别就是: ①date:MySQL 以 'YYYY-MM...那么我们怎么向数据库中存储呢?如果你只是想简单的存储日期那就选择date 可以直接...
  • 10.java 获取数据库连接

    千次阅读 2019-07-08 17:46:11
    获取连接常见问题:4.url配置在xml写法:1.xml写法2.java程序写法: jdbc获取数据库连接有2种方式,一种是通过程序自己设置用户名密码、加载驱动来获取连接,另一种是通过java的JNDI的方式来获取数据库连接。...
  • 主要介绍了如何基于java向mysql数据库中存取图片,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 1. JDBC连接MYSQL的代码很标准,很简单。 class.forName("...).newInstance(); Connection conn = DriverManager .getConnection("jdbc:mysql://localhost/test?...2. 下面就是获取表的信...
  • 这段代码是将结果集封装到Map里,字段为key,记录为value。然后再将每个Map添加到List里。 ...[java] view ...import java.sql.Connection;...import java.sql.DriverManager;...import java.sql.Resul
  • Mysql数据库的功能很强大,除了能存储字符等常见数据以外,它同样可以存储图片等二进制文件,本文以存储照片为例。 一、Mysql存储二进制文件常见报错有: 1....
  • 我使用SpringBoot复原了一下源码,需要的可以去我的GitHub上下载 ... 从前台页面获取图片,后台接收图片文件转化成数据,然后存储数据库,然后反向输出到jsp页面 二、分析一下数据转换和数据流通...
  • java+mysql实现保存图片到数据库,以及读取数据库存储图片 </h1> <div class="clear"></div> <div class="postBody"> 一:建表   二:获取数据库连接 1:导入mysql的驱动jar...
  • Java获得数据库基本信息,包括表的信息、表列的信息、索引信息、存储过程信息等。先创建与数据库的连接,通过Connection 对象的getMetaData()方法可以创建DatabaseMetaData对象,从该对象中获取数据库的基本信息。...
  • 使用Java实现图片存储-------存储数据库中并读取 求代码
  • java 读取图片存储数据库中

    千次阅读 2019-02-20 10:28:11
    存储图片是后端服务器比较基础的功能,一般来说,图片可以存储在服务器的文件系统,然后数据库中只需要存储url就可以了。另外一种办法是,将图片通过Base64编码后存储数据库中数据库中存储图片的base64编码的...
  • 我们在开发可能会遇到将数据库中的数据都取出来存储到excel去 在操作过程用到了poi-3.17.jar包 /** * 构建Excel * map参数 用来保存数据 保存的是从Handler传递过来的数据 * workBook 操作Excel ...
  • java图片保存到本地; pom.xml <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.4.7</version> </...
  • 最近做的项目有个统计分析的功能,里面需要多个表的数据汇总后作计算进行排名,就需要写很多SQL,于是乎想到用存储过程,调用一次后可以返回所有供计算使用的数据,中间遇到种种问题,现总结一二: 首先是java代码...
  • 5分钟学会java获取数据库列名、别名、类型等信息

    千次阅读 多人点赞 2018-10-31 17:13:34
    获取数据库列名、别名、类型等信息   一、前言  本次总结为:获取数据库表列名,别名,类型,列数,表名等相关信息。  现总结如下:   二、代码 /** * 描述:获取数据库相关信息 * @author 猿医生 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 617,959
精华内容 247,183
关键字:

java如何获取数据库中存储的图片

java 订阅