| | |
| | | import javax.servlet.http.HttpSession; |
| | | import java.io.UnsupportedEncodingException; |
| | | import java.net.URLEncoder; |
| | | import java.sql.*; |
| | | import java.sql.CallableStatement; |
| | | import java.sql.SQLException; |
| | | import java.sql.Types; |
| | | import java.util.*; |
| | | import java.util.Map.Entry; |
| | | import java.util.regex.Matcher; |
| | |
| | | } |
| | | |
| | | /** |
| | | * 根据表名取得表主键名 |
| | | * 根据表名取得表主键名,查找表结构和9807设置 |
| | | * |
| | | * @return int |
| | | * @throws SQLException |
| | | */ |
| | | @Override |
| | | public List<String> getPrimaryKey(String tableName) throws DataAccessException, SQLException { |
| | | |
| | | Connection con = null; |
| | | ResultSet rs = null; |
| | | List<String> key = new ArrayList<String>(); |
| | | try { |
| | | con = this.jdbcTemplate.getDataSource().getConnection(); |
| | | rs = con.getMetaData().getPrimaryKeys(null, null, tableName); |
| | | while (rs.next()) { |
| | | key.add(rs.getString(4)); |
| | | } |
| | | } catch (Exception e) { |
| | | throw new ApplicationException(e.getMessage()); |
| | | } finally { |
| | | if (rs != null) |
| | | rs.close(); |
| | | if (con != null) |
| | | con.close(); |
| | | String sql="declare @key varchar(1000),@tableName varchar(100)=?\n" + |
| | | " SELECT @key=stuff((SELECT';' + CONVERT(VARCHAR, column_name)\n" + |
| | | " FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS TC\n" + |
| | | " INNER JOIN\n" + |
| | | " INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS KU\n" + |
| | | " ON TC.CONSTRAINT_TYPE = 'PRIMARY KEY' AND\n" + |
| | | " TC.CONSTRAINT_NAME = KU.CONSTRAINT_NAME AND \n" + |
| | | " KU.table_name=@tableName\n" + |
| | | " ORDER BY KU.TABLE_NAME, KU.ORDINAL_POSITION\n" + |
| | | " FOR XML PATH ('')),1,1,'')\n" + |
| | | " if isnull(@key,'')=''\n" + |
| | | " begin\n" + |
| | | " select @key=keyfields from _systablekey where tableid=@tableName\n" + |
| | | " end\n" + |
| | | " select lower(@key)"; |
| | | final String result = this.getSimpleJdbcTemplate().queryForObject(sql, String.class, tableName); |
| | | if(result!=null){ |
| | | key=Arrays.asList(result.split(";")); |
| | | } |
| | | return key; |
| | | } |