怎么在键盘输入
create table user(
name char,
number long ,
);
以分结束
获取表明user,写入文件
name number
张三 1234
主要是解析字符串,请给予指导,谢谢了。
[b]问题补充:[/b]
我想在屏幕处键盘输入命令,想SQLplus那样,输入;号结束。
怎么实现啊。
java 模拟SQL语句的问题。
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- 成尚謙 2009-10-24 19:09关注
[code="java"]
import java.util.regex.Matcher;
import java.util.regex.Pattern;public class ConsoleSqlDDL {
/** * 测试 * @param args */ public static void main(String[] args) { String str = "create table user (name char,number long);CREATE Table school (address varchar,zipcode long)"; formatSQL(str); } /** * 解析SQL的DDL语句获取表明和字段名 * @param str */ public static void formatSQL(String str) { String[] arr = str.trim().split(";"); String tbReg = "\\s*create\\s+table\\s+(.+)\\s+\\("; for(int i = 0; i < arr.length; i++) { String sql = arr[i]; /*获取表名*/ Pattern p =Pattern.compile(tbReg,Pattern.CASE_INSENSITIVE); Matcher m = p.matcher(sql); String table = ""; String[] tables = p.split(sql); if(tables.length > 0) { int count = 0; while(count < tables.length) { if(m.find()) { table = m.group(1); System.out.println("table=====>"+table); } count++; } } /*获取表的字段名*/ String columns = ""; String colReg = "\\((.+)\\)"; Pattern pc =Pattern.compile(colReg,Pattern.CASE_INSENSITIVE); Matcher mc = pc.matcher(sql); String[] cols = pc.split(sql); if(cols.length > 0) { int count = 0; while(count < cols.length) { if(mc.find()) { columns = mc.group(1); String[] column = columns.split(","); for(int c = 0; c < column.length; c++) { String columnReg = "\\s+"; Pattern pcm =Pattern.compile(columnReg,Pattern.CASE_INSENSITIVE); String[] col = pcm.split(column[c]); String tbColumnn = col[0]; System.out.println("columnn[" + c + "] =====>" + tbColumnn); } } count++; } } System.out.println("\n\n"); } }
}
[/code]
运行输出的结果:
[code="java"]
table=====>user
columnn[0] =====>name
columnn[1] =====>numbertable=====>school
columnn[0] =====>address
columnn[1] =====>zipcode
[/code]本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 ubuntu子系统密码忘记
- ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
- ¥15 保护模式-系统加载-段寄存器
- ¥15 电脑桌面设定一个区域禁止鼠标操作
- ¥15 求NPF226060磁芯的详细资料
- ¥15 使用R语言marginaleffects包进行边际效应图绘制
- ¥20 usb设备兼容性问题
- ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊
- ¥15 安装svn网络有问题怎么办
- ¥15 vue2登录调用后端接口如何实现