怎么在键盘输入
create table user(
name char,
number long ,
);
以分结束
获取表明user,写入文件
name number
张三 1234
主要是解析字符串,请给予指导,谢谢了。
[b]问题补充:[/b]
我想在屏幕处键盘输入命令,想SQLplus那样,输入;号结束。
怎么实现啊。
[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] =====>number
table=====>school
columnn[0] =====>address
columnn[1] =====>zipcode
[/code]