写在前面

通过自己编写的Java代码程序,去模仿实现MySql客服端的简单功能,最终以控制台操作,很像在Dos窗口通过命令操作MySql数据库。

关键问题

在编写过程中遇到的一些小问题和一些值得留心注意的点:

  • 增删改查结果是否成功的获得
  • 查询结果 不定集列数的获得
1  //获取结果集的列数
2 78 ResultSetMetaData rsmd = rs.getMetaData();
3 79 int i = rsmd.getColumnCount();
  • 完整代码
 1 import java.sql.*;
2 import java.util.*;
3
4 public class YouSqlClient {
5
6 private static String name = "";
7 private static String passwor = "";
8 static Connection con;
9 static Statement statement = null;
10 static ResultSet rs;
11 static Scanner input = new Scanner(System.in);
12
13 public static void main(String[] args) {
14
15 System.out.println("userName:");
16 name = input.nextLine();
17 System.out.println("password:");
18 passwor = input.nextLine();
19
20 try {
21
22 String sql = "";
23
24 Class.forName("com.mysql.jdbc.Driver").newInstance();//初始化数据库驱动
25 //指定链接数据库的信息
26 con = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/mydbone?useUnicode=true&characterEncoding=UTF-8",name,passwor);
27 statement = con.createStatement();
28 System.out.println("login succeded!");//上面的语句成功执行,提示登陆成功
29
30 boolean isExit = true;
31
32 while(isExit) {//通过循环不断接收命令
33
34 System.out.println("Please enter the commend>");
35
36 //登陆后的操作
37 sql = input.nextLine();//测试:show databases;
38
39 try {
40 if( sql.indexOf( "use" ) == 0 ) {//换数据库
41 statement.executeQuery( sql );
42 System.out.println("Database changed!");
43 }
44 else if ( ( sql.indexOf( "show" ) == 0 || sql.indexOf( "select" ) == 0) && statement.execute(sql) ) { //查表
45 selectOperate();
46 }
47 else if ( statement.execute(sql) ) {//不是对表内数据的增删该查,不是数据库的切换,不是show table或者 DB
48 //建立新表 + 删除表 + 等等其他操作
49 }
50 else if (sql.equals("exit")) {
51 isExit = false;
52 System.out.println("exit succeded!");
53 }
54 else {
55 System.out.println( "query succedes!" );
56 }
57 } catch (SQLException e) {
58 e.printStackTrace();
59 }
60 }
61 } catch (InstantiationException e) {
62 e.printStackTrace();
63 } catch (IllegalAccessException e) {
64 e.printStackTrace();
65 } catch (ClassNotFoundException e) {
66 e.printStackTrace();
67 } catch (SQLException e) {
68 e.printStackTrace();
69 }
70 }
71
72 //查询
73 static void selectOperate() throws SQLException {
74
75 rs = statement.getResultSet();
76
77 //获取结果集的列数
78 ResultSetMetaData rsmd = rs.getMetaData();
79 int i = rsmd.getColumnCount();
80
81 //列名
82 for( int j = 1; j <= i; j++ ) {
83
84 System.out.print(rsmd.getColumnName(j) + "\t");
85 }
86 System.out.println("\n----------------------------------------------");
87
88 while( rs.next() ) { // 依次获得查询结果,每次执行nest,换一行
89
90 for( int j = 1; j <= i; j++ ) {
91
92 System.out.print(rs.getString(j) + "\t");
93 }
94 System.out.println();
95 }
96 }
97
98 }

编程模仿MySql客服端的更多相关文章

  1. python socket 客服端服务端编程

    客服端编程 import socket try: s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) except socket.error a ...

  2. Python网络编程UDP服务器与客服端简单例子

    [转载] https://blog.csdn.net/hu330459076/article/details/7868028 UDP服务器代码: #!/usr/bin/env python # -*- ...

  3. 浏览器与服务器间的交互(客服端 <---> 服务器)

    浏览器与服务器间的交互(客服端 <---> 服务器) 请求--->处理--->响应 对类HttpContext 内部成员的使用 例如 :Request .Response .  ...

  4. android客服端+eps8266+单片机+路由器之远程控制系统

    用android客服端+eps8266+单片机+路由器做了一个远程控制的系统,因为自己是在实验室里,所以把实验室的门,灯做成了远程控制的. 控制距离有多远------只能说很远很远,只要你手机能上网的 ...

  5. python服务器端、客户端的模型,客服端发送请求,服务端进行响应(web.py)

    服务器端.客户端的模型,客服端发送的请求,服务端的响应 相当于启动了一个web server install web.py 接口框架用到的包 http://webpy.org/tutorial3.zh ...

  6. cas 服务端、客服端详细配置

    一.准备 1.下载官方源码 CAS-Server下载地址:https://www.apereo.org/projects/cas/download-cas CAS-Client下载地址:http:// ...

  7. 客服端JavaScript线程模型

    JavaScript语言核心并不包含任何线程机制,并且客服端JavaScript传统上没有定义任何线程机制.HTML5定义了一种作为后台线程的“WebWorker",但是客服端JavaScr ...

  8. 使用Mosquitto实现MQTT客服端C语言

      上一篇文章已经将mosquitto移植到了arm平台上,现在将使用mosquitto完成mqtt客服端的demo,了解过mqtt协议的小伙伴都知道,mqtt主要分为代理服务器.发布者.订阅者三部分 ...

  9. TCP服务器端和客服端(一)

    就是一个客服端(Socket)和服务器(ServerSocket)端的链接间.我的理解是一个服务端可以链接多个客服端. 在客服端有输入流outPutStream. 用于发送数据 在服务器端有输出流.i ...

随机推荐

  1. 在ES5中模拟类

    1.Object.create()方法创建一个新对象,使用现有的对象来提供新创建的对象的__proto__. var _this = Object.create(fn.prototype);这句代码的 ...

  2. 使用栅格系统开发响应式页面——logo+nav实例

    小屏时: 中屏及以上时: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...

  3. Ubuntu下安装Python3(与旧Python2版本共存)

    官网下载Python3的源码 进行配置,在源码目录运行如下命令. ./configure --prefix=/usr/local/python3 --enable-shared 进行编译,在源码目录运 ...

  4. Python实现Thrift Server

    近期在项目中存在跨编程语言协作的需求,使用到了Thrift.本文将记录用python实现Thrift服务端的方法. 环境准备 根据自身实际情况下载对应的Thrift编译器,比如我在Windows系统上 ...

  5. 【Azure 应用服务】Python flask 应用部署在Aure App Service中作为一个子项目时,解决遇见的404 Not Found问题

    问题描述 在成功的部署Python flask应用到App Service (Windows)后,如果需要把当前项目(如:hiflask)作为一个子项目(子站点),把web.config文件从wwwr ...

  6. 对easyui-validatebox的验证类型的扩展

    easyui为我们提供了validatebox类型的组件,使用它可以完成自动验证,十分方便.要注意的是,easyui中的各个组件都是有继承关系的.通过查看api,textbox继承validatebo ...

  7. gohbase使用文档

    目录 1. 建立连接 2. 创建表 3. 插入记录 4. 删除记录 5. 查询记录 5.1 根据RowKey查询 5.2 scan范围查询 5.3 复杂查询(过滤器的使用) 5.3.1 比较过滤器 5 ...

  8. 【第二篇】- Maven 环境配置之Spring Cloud直播商城 b2b2c电子商务技术总结

    Maven 环境配置 Maven 是一个基于 Java 的工具,所以要做的第一件事情就是安装 JDK. 如果你还未安装 JDK,可以参考我们的 Java 开发环境配置. 系统要求 项目 要求 JDK ...

  9. python爬取疫情数据存入MySQL数据库

    import requests from bs4 import BeautifulSoup import json import time from pymysql import * def mes( ...

  10. php获取纳秒方法

    PHP不提供精度高于微秒的函数. 可以使用system功能,直接从机器中获得的价值,如果你运行的是Linux: $nanotime = system('date +%s%N');