- 浏览: 205786 次
- 性别:
- 来自: 紫禁城
文章分类
最新评论
-
a1439226817:
<!doctype html><html l ...
发布一个支持N级下拉列表联动的控件 -
a1439226817:
也不高个测试的demo,别人怎么用啊
发布一个支持N级下拉列表联动的控件 -
davaidgao:
不全啊,这是
Spring3.x权威开发指南 -
caizi12:
对于map绑定很是不方便,现在的做法,需要创建一User类,再 ...
浅谈 SpringMVC 数据绑定 -
joeyhuang:
不全啊..
Spring3.x权威开发指南
/**DatabaseMetaData接口查看数据库的整体综合信息,它位于java.sql包中,
* 由数据库驱动程序供应商提供,里面定义了很多关于此数据库的信息,例如版
* 本号、此JDBC驱动程序的名称等等。ResultSetMetaData可用于获取关于
* ResultSet 对象中列的类型和属性信息的对象,也位于java.sql包中。下面
* 这个程序的主要功能是查看所有数据库、进入指定的数据库查看所有表、查看表
* 的详细信息、以及使用select、update、insert、delete操作数据表信息等。
* 因为效果图太多,这里我就不截图了,有兴趣的朋友可以在自己机上试试看。
* 下面是实现的代码:
*/
/**
* 静态导入System包,因为在下面用System.out.println()
* 比较多,有此import语句就可以省略前面的System了。这是
* jdk1.5的新语法,有兴趣的朋友可以看看java核心技术的第
* 七版,所有的新语法都有介绍。
*/
import static java.lang.System.*;
/** 导入下面要用到的所有类 */
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.util.Scanner;
public class Client {
/**
* 定义几个全局变量
*/
private Connection con = null;
private PreparedStatement pstmt = null;
private ResultSet rs = null;
private ResultSetMetaData rsmd = null;
private String url = "";
/**
* 首先使用static块加载mysql的驱动,static块里面的代码在 Client类一加载就执行,且只执行一次
*/
static {
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
/**
* useMysql方法,功能是使用use命令进入参数指定的数据库
*
* @param dbName
* 数据库名
* @return void
*/
public void useMysql(String dbName) {
url = "jdbc:mysql://localhost:3306/" + dbName;
try {
con = DriverManager.getConnection(url, "usename", "password");
out.println("数据库已改变!");
} catch (Exception e) {
out.println("Exception:" + e.getMessage());
}
}
/**
* execute 方法根据参数判断执行指定的命令
*
* @param prefix
* 命令的第一个单词
* @param sql
* 要执行sql语句sql语句
*/
public void execute(String prefix, String sql) {
if (prefix.equals("use")) {
useMysql(sql);
} else if (prefix.equals("show")) {
show(sql);
} else if (prefix.equals("desc")) {
desc(sql);
} else if (prefix.equals("select")) {
select(prefix + " " + sql);
} else if (prefix.equals("update") || prefix.equals("insert")
|| prefix.equals("delete")) {
update(prefix + " " + sql);
} else {
out.println("错误的命令!");
}
}
/**
* update方法 用于执行update、insert、delete命令
*
* @param sql
* 要执行sql语句
*/
private void update(String sql) {
if (con == null) {
out.println("请先使用use命令!");
} else {
try {
pstmt = con.prepareStatement(sql);
// 如果影响行数不为则说明sql语句执行成功
if (pstmt.executeUpdate(sql) != 0) {
out.println("执行成功!");
}
} catch (Exception e) {
out.println(e.getMessage());
}
}
}
/**
* select 方法,用于执行select语句。此方法写了大量的格式化语
* 句。也使用到了jdk1.5的新语法。那就是System.out.printf()方法。
* 使用方法和C语言差不多。
* @param sql
* 要执行sql语句
*/
private void select(String sql) {
if (con == null) {
out.println("请先使用use命令!");
} else {
try {
pstmt = con.prepareStatement(sql);
rs = pstmt.executeQuery();
rsmd = rs.getMetaData();
int j = 15 * rsmd.getColumnCount() + rsmd.getColumnCount() - 1;
out.print("+");
for (int i = 0; i < j; i++)
out.print("-");
out.print("+\n");
for (int i = 1; i <= rsmd.getColumnCount(); i++) {
out.printf("|%-15s", rsmd.getColumnName(i));
}
out.print("|\n+");
for (int i = 0; i < j; i++)
out.print("-");
out.print("+\n");
// 表中数据的信息
while (rs.next()) {
for (int i = 1; i <= rsmd.getColumnCount(); i++) {
out.printf("|%-15s", rs.getObject(i).toString());
}
out.println("|");
}
out.print("+");
for (int i = 0; i < j; i++)
out.print("-");
out.print("+\n");
} catch (Exception e) {
out.println(e.getMessage());
}
}
}
/**
* desc方法,用于查看指定表的具体信息,类似于mysql命令的desc语句的功能
*
* @param table
* 指定的表名
*/
private void desc(String table) {
if (con == null) {
out.println("请先使用use命令!");
} else {
try {
pstmt = con.prepareStatement("select * from " + table);
rs = pstmt.executeQuery();
rsmd = rs.getMetaData();
out.print("+");
for (int i = 0; i < 68; i++)
out.print("-");
out.print("+\n");
out.printf("|%-25s|%-15s|%-10s|%-15s|\n", "Field", "Type",
"Null", "Extra");
out.print("+");
for (int i = 0; i < 68; i++)
out.print("-");
out.print("+\n");
// 表的详细信息
for (int i = 1; i <= rsmd.getColumnCount(); i++) {
out.printf("|%-25s", rsmd.getColumnName(i));
out.printf("|%-15s", rsmd.getColumnTypeName(i) + "("
+ rsmd.getColumnDisplaySize(i) + ")");
out.printf("|%-10s", ((rsmd.isNullable(i) == 1) ? "YES"
: "NO"));
out.printf("|%-15s|\n",
rsmd.isAutoIncrement(i) ? "auto_increment" : "");
}
out.print("+");
for (int i = 0; i < 68; i++)
out.print("-");
out.print("+\n");
} catch (Exception e) {
out.println(e.getMessage());
}
}
}
/**
* show 方法,根据用户输入的信息判断是show tables 还是show databases 再进行处理
*
* @param obj
* 要查看的对象
*/
private void show(String obj) {
if (obj.equals("tables")) {
if (con == null) {
out.println("请先使用use命令!");
} else {
try {
DatabaseMetaData dsmd = con.getMetaData();
rs = dsmd.getTables(null, null, null, null);
out.print("+");
for (int i = 0; i < 78; i++)
out.print("-");
out.print("+\n");
out.printf("|%-27s|%-12s|%-12s|%-12s|", "表名称", "表类别",
"表类型", "表模式");
out.println();
out.print("+");
for (int i = 0; i < 78; i++)
out.print("-");
out.print("+");
out.println();
while (rs.next()) {
out.printf("|%-30s|%-15s|%-15s|%-15s|", rs
.getString("TABLE_NAME"), rs
.getString("TABLE_CAT"), rs
.getString("TABLE_TYPE"), rs
.getString("TABLE_SCHEM"));
out.println();
}
out.print("+");
for (int i = 0; i < 78; i++)
out.print("-");
out.print("+");
out.println();
} catch (Exception e) {
out.println(e.getMessage());
}
}
} else if (obj.equals("databases")) {
try {
con = DriverManager.getConnection("jdbc:mysql:///", "usename",
"password");
DatabaseMetaData dsmd = con.getMetaData();
rs = dsmd.getCatalogs();
out.print("+");
for (int i = 0; i < 30; i++)
out.print("-");
out.print("+");
out.println();
out.printf("|%-30s|\n", "DATABASE");
out.print("+");
for (int i = 0; i < 30; i++)
out.print("-");
out.print("+");
out.println();
while (rs.next()) {
out.printf("|%-30s|\n", rs.getString(1));
}
out.print("+");
for (int i = 0; i < 30; i++)
out.print("-");
out.print("+");
out.println();
} catch (Exception e) {
out.println(e.getMessage());
}
} else {
out.println("错误的命令!");
}
}
public static void main(String[] args) {
/**
* Scanner也是jdk1.5新加进来的一个类,在java.util
* 包中,具体用法可以查看jdk1.5的API,这里是从键盘获
* 得一个输入流,比用BufferedReader简单的多了。
*/
Scanner scanner = new Scanner(System.in);
Client client = new Client();
out.println("查看所有数据库使用show databases命令");
out.println("进入数据库使用use命令(use databaseName)");
out.println("查看数据库表信息使用show tables命令");
out.println("显示表信息使用desc命令(desc tableName)");
out.println("执行sql命令使用select,update,delete");
out.println("退出请使用 quit ");
String command = "";
while (true) {
try {
out.print("mysql> ");
command = scanner.nextLine();
//判断输入的命令是否为quit或者QUIT,是则跳出循环,退出程序
if (command.trim().equals("quit")
|| command.trim().equals("QUIT")) {
break;
}
//使用正则表达式去掉输入字符串的前后空格后再把中间所有超过一
//个空格的地方转换为一个空格
command = command.trim().replaceAll(" +", " ");
//经过上面处理后取到命令的第一个关键字
String prefix = command.substring(0, command.indexOf(" "));
String sql = command.substring(command.indexOf(" ") + 1);
client.execute(prefix, sql);
} catch (Exception e) {
out.println(e.getMessage());
}
}
}
}
发表评论
-
Ubuntu下JDK+Tomcat+MySql环境的搭建
2011-06-15 14:48 1159Ubuntu 下 JDK+Tomcat+MySql ... -
Eclipse下切换 SVN 中已经保存的用户名和密码
2009-09-22 10:28 17361. 把 C:\Documents and Set ... -
Java实现汉字转换为拼音
2006-10-31 13:15 617import java.util.HashMap;import ... -
Java中的克隆(Clone)机制
2007-08-03 09:03 637现在Clone已经不是一个新鲜词语了,伴随着“多莉”的产生这个 ... -
JDK1.5中的线程池(java.util.concurrent.ThreadPoolExecutor)使用简介
2008-12-16 10:32 739在多线程大师Doug Lea的贡献下,在JDK1.5中加入 ... -
Java读取Properties文件的六种方法
2009-04-16 09:34 734使用J2SE API读取Properties文件的六种方法 ... -
深入探讨java集合类
2006-08-24 20:47 724不同的集合在添加对象时的处理是不同的:Set:不允许重复,且没 ... -
递归在java语言中的应用
2006-08-25 09:21 1035一 . 两个小经验 1.在定义一个类时,不要随意定义成员变量 ... -
java类装载器
2006-08-25 18:36 866一 . 面向接口编程. 不要面向类编程. 二 . 关于异常:如 ... -
几个Java基础知识
2006-08-25 19:18 678一 . Hashtable和HashMap Hashtab ... -
面向方面的编程(AOP)
2006-08-25 19:33 741面向对象的编程(OOP)中 ... -
Collection与UML学习
2006-09-01 19:19 703一 . 属性<property>时须注意:1. & ... -
反射和代理
2006-09-01 19:23 712一. 关于数据库.当今的数据处理大致可以分成两大类:联机事务处 ... -
Jdk1.5的新语法和一些java学习的小知识点
2006-09-01 19:30 1227一.1. 操作系统执行具体 ... -
自己动手写数据库连接池
2006-10-07 22:28 1046在前面的文章中已经说过使用连接池的很多好处和优势,也曾讨论过怎 ... -
BASE64编码
2006-10-24 08:39 13221.HttpServletRequest: 请求 ... -
一个实现MD5的简洁的java类
2006-10-28 22:27 659一个实现MD5的简洁的java类 package test; ... -
使用Java将Word转为Html或txt!
2006-10-31 13:47 1228package org.client; // 使用Java将W ... -
理解接口
2006-11-01 14:12 548... -
正则表达式中问号等特殊字符的转义
2006-11-10 00:26 2493正则表达式中问号等特殊字符的转义 除 .$ ^ { [ ( | ...
相关推荐
功能说明: 本系统主要包括以下功能模块:个人中心,通知公告管理,用户管理,工作人员管理,进门登记管理,出门登记管理,出入统计管理,外来登记管理等模块。 环境说明: 开发语言:Java 框架:ssm,mybatis JDK版本:JDK1.8 数据库:mysql 5.7及以上 数据库工具:Navicat11及以上 开发软件:eclipse/idea Maven包:Maven3.3及以上 服务器:tomcat7及以上
PartSegCore_compiled_backend-0.12.0a0-cp36-cp36m-win_amd64.whl.rar
yolo算法-分神驾驶数据集-8674张图像带标签-没有安全带-唤醒-昏昏欲睡-安全带-电话-打哈欠.zip;yolo算法-分神驾驶数据集-8674张图像带标签-没有安全带-唤醒-昏昏欲睡-安全带-电话-打哈欠.zip;yolo算法-分神驾驶数据集-8674张图像带标签-没有安全带-唤醒-昏昏欲睡-安全带-电话-打哈欠.zip;yolo算法-分神驾驶数据集-8674张图像带标签-没有安全带-唤醒-昏昏欲睡-安全带-电话-打哈欠.zip
python whl离线安装包 pip安装失败可以尝试使用whl离线安装包安装 第一步 下载whl文件,注意需要与python版本配套 python版本号、32位64位、arm或amd64均有区别 第二步 使用pip install XXXXX.whl 命令安装,如果whl路径不在cmd窗口当前目录下,需要带上路径 WHL文件是以Wheel格式保存的Python安装包, Wheel是Python发行版的标准内置包格式。 在本质上是一个压缩包,WHL文件中包含了Python安装的py文件和元数据,以及经过编译的pyd文件, 这样就使得它可以在不具备编译环境的条件下,安装适合自己python版本的库文件。 如果要查看WHL文件的内容,可以把.whl后缀名改成.zip,使用解压软件(如WinRAR、WinZIP)解压打开即可查看。 为什么会用到whl文件来安装python库文件呢? 在python的使用过程中,我们免不了要经常通过pip来安装自己所需要的包, 大部分的包基本都能正常安装,但是总会遇到有那么一些包因为各种各样的问题导致安装不了的。 这时我们就可以通过尝试去Python安装包大全中(whl包下载)下载whl包来安装解决问题。
中国省级与地级市财政转移支付数据-最新.zip
OPENCV 常用XML 内涵17个常用XML,包括人脸检测,微笑检测,人眼检测,用于学习模型训练和使用
python whl离线安装包 pip安装失败可以尝试使用whl离线安装包安装 第一步 下载whl文件,注意需要与python版本配套 python版本号、32位64位、arm或amd64均有区别 第二步 使用pip install XXXXX.whl 命令安装,如果whl路径不在cmd窗口当前目录下,需要带上路径 WHL文件是以Wheel格式保存的Python安装包, Wheel是Python发行版的标准内置包格式。 在本质上是一个压缩包,WHL文件中包含了Python安装的py文件和元数据,以及经过编译的pyd文件, 这样就使得它可以在不具备编译环境的条件下,安装适合自己python版本的库文件。 如果要查看WHL文件的内容,可以把.whl后缀名改成.zip,使用解压软件(如WinRAR、WinZIP)解压打开即可查看。 为什么会用到whl文件来安装python库文件呢? 在python的使用过程中,我们免不了要经常通过pip来安装自己所需要的包, 大部分的包基本都能正常安装,但是总会遇到有那么一些包因为各种各样的问题导致安装不了的。 这时我们就可以通过尝试去Python安装包大全中(whl包下载)下载whl包来安装解决问题。
python whl离线安装包 pip安装失败可以尝试使用whl离线安装包安装 第一步 下载whl文件,注意需要与python版本配套 python版本号、32位64位、arm或amd64均有区别 第二步 使用pip install XXXXX.whl 命令安装,如果whl路径不在cmd窗口当前目录下,需要带上路径 WHL文件是以Wheel格式保存的Python安装包, Wheel是Python发行版的标准内置包格式。 在本质上是一个压缩包,WHL文件中包含了Python安装的py文件和元数据,以及经过编译的pyd文件, 这样就使得它可以在不具备编译环境的条件下,安装适合自己python版本的库文件。 如果要查看WHL文件的内容,可以把.whl后缀名改成.zip,使用解压软件(如WinRAR、WinZIP)解压打开即可查看。 为什么会用到whl文件来安装python库文件呢? 在python的使用过程中,我们免不了要经常通过pip来安装自己所需要的包, 大部分的包基本都能正常安装,但是总会遇到有那么一些包因为各种各样的问题导致安装不了的。 这时我们就可以通过尝试去Python安装包大全中(whl包下载)下载whl包来安装解决问题。
python whl离线安装包 pip安装失败可以尝试使用whl离线安装包安装 第一步 下载whl文件,注意需要与python版本配套 python版本号、32位64位、arm或amd64均有区别 第二步 使用pip install XXXXX.whl 命令安装,如果whl路径不在cmd窗口当前目录下,需要带上路径 WHL文件是以Wheel格式保存的Python安装包, Wheel是Python发行版的标准内置包格式。 在本质上是一个压缩包,WHL文件中包含了Python安装的py文件和元数据,以及经过编译的pyd文件, 这样就使得它可以在不具备编译环境的条件下,安装适合自己python版本的库文件。 如果要查看WHL文件的内容,可以把.whl后缀名改成.zip,使用解压软件(如WinRAR、WinZIP)解压打开即可查看。 为什么会用到whl文件来安装python库文件呢? 在python的使用过程中,我们免不了要经常通过pip来安装自己所需要的包, 大部分的包基本都能正常安装,但是总会遇到有那么一些包因为各种各样的问题导致安装不了的。 这时我们就可以通过尝试去Python安装包大全中(whl包下载)下载whl包来安装解决问题。
开发语言:Java 框架:SSM JDK版本:JDK1.8 服务器:tomcat8.5 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea 浏览器:谷歌浏览器
yolo系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,包含数据集配置文件data.yaml,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值
中国各省GDP及农业主要指标数据集(1999-2019).zip
功能说明: 系统主要包括系统主页、个人中心、用户管理、图书信息管理、图书分类管理、图书购买管理、图书借阅管理、图书续借管理、图书归还管理、留言板管理、系统管理等功能模块。 环境说明: 开发语言:Java 框架:ssm,mybatis JDK版本:JDK1.8 数据库:mysql 5.7及以上 数据库工具:Navicat11及以上 开发软件:eclipse/idea Maven包:Maven3.3及以上 服务器:tomcat7及以上
2023-04-06-项目笔记-第三百二十阶段-课前小分享_小分享1.坚持提交gitee 小分享2.作业中提交代码 小分享3.写代码注意代码风格 4.3.1变量的使用 4.4变量的作用域与生命周期 4.4.1局部变量的作用域 4.4.2全局变量的作用域 4.4.2.1全局变量的作用域_1 4.4.2.318局变量的作用域_318- 2024-11-17
Saturn_PCB_Toolkit_V7.00_ 是一款功能强大的PCB参数计算工具,本人PCB设计15年一直使用的这款计算器,利用其给出的设计数据(如线距、线宽线厚),布出的PCB实际使用未曾出现过问题 以下是其主要功能特点: 1. **过孔特性计算**:能够计算过孔的寄生电容、寄生电感、过孔阻抗、过孔直流电阻、共振频率、阶跃响应、功耗等参数。 2. **导线载流能力计算**:可以计算不同线宽下的载流能力,根据环境温度和温升条件,提供不同条件下的载流值。 3. **串扰计算**:计算两相互耦合信号线间的串扰,这对于高速PCB设计尤为重要。 4. **波长计算**:提供波长的计算功能,这对于射频和高速数字PCB设计非常关键。 5. **导体阻抗计算**:计算导体的阻抗,这对于阻抗匹配和信号完整性至关重要。 6. **单位换算**:提供单位换算功能,方便不同单位制之间的转换。 7. **差分对计算**:针对差分信号的计算,这对于高速数据传输和降低噪声非常重要。
yolo系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,包含数据集配置文件data.yaml,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值
## 一、数据介绍 数据名称:中国各、省、市、县、乡镇基尼系数数据 数据年份:1992-2023年 样本数量:92064条 数据格式:面板数据 ## 二、指标说明 共计10个指标:年份、省、省代码、市、市代码、县、县代码、乡镇、乡镇代码、夜间灯光基尼系数 ## 三、数据文件 中国各乡镇基尼系数(基于夜间灯光数据)2000-2023年.dta; 中国各区县基尼系数(基于夜间灯光数据)2000-2023年.dta; 中国各城市基尼系数(基于夜间灯光数据)2000-2023年.dta; 中国各省份基尼系数(基于夜间灯光数据)2000-2023年.dta
环境说明: 开发语言:Java 框架:ssm,mybatis JDK版本:JDK1.8 数据库:mysql 5.7及以上 数据库工具:Navicat11及以上 开发软件:eclipse/idea Maven包:Maven3.3及以上 服务器:tomcat7及以上
功能说明: 系统主要包括管理员,商家和用户三大模块 (a) 管理员;管理员进入系统主要功能包括个人中心,用户管理,商家管理,用品分类管理,用品信息管理,系统管理,订单管理等功能并进行操作。 (b) 商家;商家进入系统主要功能包括个人中心,用品信息管理,订单管理等功能并进行操作。 (c) 用户;用户进入系统主要功能包括个人中心,我的收藏管理等功能并进行操作。 环境说明: 开发语言:Java 框架:ssm,mybatis JDK版本:JDK1.8 数据库:mysql 5.7及以上 数据库工具:Navicat11及以上 开发软件:eclipse/idea Maven包:Maven3.3及以上 服务器:tomcat7及以上
最新行政区划、乡镇级矢量地图及2022年道路、水系、建筑轮廓数据(shp格式)-已更至最新.zip