import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
import java.util.Scanner;

public class ExUserSQL11_3 
{
	public static void main(String[] args) 
	{
		String user = "root";
		String password = "123456";
		String url = "jdbc:mysql://localhost:3306/test";
		try 
		{
			Class.forName("com.mysql.jdbc.Driver");	//Java 6 д˾ʡԲд
			Connection conn = DriverManager.getConnection(url, user, password);
			System.out.println("ӵtestݿ⣬µݱ");
			try 
			{
				Statement stat = conn.createStatement();
				DatabaseMetaData database = conn.getMetaData();
				ResultSet tables = database.getTables(null, null, null, new String[]{"TABLE"});
				ResultSetMetaData columns = null;
				ResultSet rs = null;
				String table_name = null;
				StringBuilder table_model = new StringBuilder();
				while(tables.next()) 
				{
					table_name = tables.getString(3).toUpperCase();
					rs = stat.executeQuery("SELECT * FROM " + table_name);
					columns = rs.getMetaData();
					table_model.append(table_name);
					table_model.append('(');
					table_model.append(columns.getColumnName(1));
					for(int i=2; i<=columns.getColumnCount(); i++)
					{
						table_model.append(", ");
						table_model.append(columns.getColumnName(i));
					}
					table_model.append(");");
					System.out.println(table_model.toString());
					table_model.delete(0, table_model.length());
				}
				System.out.println("\nSQL䣬exit");
				Scanner scanner = new Scanner(System.in);
				String command_line = scanner.nextLine();
				while(command_line.toLowerCase().equals("exit")==false) 
				{
					boolean flag = stat.execute(command_line);
					if(flag == false) 
					{
						int n = stat.getUpdateCount();
						System.out.println("ݿܵӰļ¼Ϊ "+n+" ");
					}else 
					{
						rs = stat.getResultSet();
						columns = rs.getMetaData();
						int count = columns.getColumnCount();
						for(int i=1; i<=count; i++) 
						{
							System.out.print(columns.getColumnLabel(i)+"\t");
						}
						System.out.println();
						while(rs.next()) 
						{
							for(int i=1; i<=count; i++) 
							{
								System.out.print(rs.getObject(i)+"\t");
							}
							System.out.println();
						}
					}
					System.out.println("\nһָ");
					command_line = scanner.nextLine();
				}
				System.out.println("ллʹã~");
			}
			finally 
			{
				conn.close();
			}
		} catch (Exception e) 
		{
			String exception = e.getClass().getSimpleName();
			System.out.println(" "+exception+" 쳣...");
		}
	}
}