📄 mmhttpdb.jsp
字号:
}
return MarshallRecordsetIntoHTML(aResultSet);
}
}
}
catch (Exception e)
{
return HandleException(e);
}
return null;
}
public String SupportsProcedure(Connection aConn)
{
String status = "true";
try
{
if ((aConn!=null) && !aConn.isClosed())
{
DatabaseMetaData dm = aConn.getMetaData();
if (dm != null)
{
String pTerm = dm.getProcedureTerm();
if (pTerm != null)
{
if (pTerm.equals("QUERY"))
{
status = "false";
}
}
String xmlOutput = "";
xmlOutput = xmlOutput + "<SUPPORTSPROCEDURE status=";
xmlOutput = xmlOutput + status;
xmlOutput = xmlOutput + "></SUPPORTSPROCEDURE>";
return xmlOutput;
}
}
}
catch (Exception e)
{
String xmlOutput ="<SUPPORTSPROCEDURE status=true></SUPPORTSPROCEDURE>";
return xmlOutput;
}
return null;
}
public String ReturnsResultSet(Connection aConn,String ProcName, String SchemaName , String CatalogName)
{
String status = "false";
try
{
if ((aConn!=null) && !aConn.isClosed() && (ProcName!=null) && (ProcName.length()>0))
{
DatabaseMetaData dm = aConn.getMetaData();
if (dm != null)
{
if ((CatalogName != null) && (CatalogName.length()==0))
{
CatalogName = null;
}
if ((SchemaName != null) && (SchemaName.length()==0))
{
SchemaName = null;
}
ResultSet aResultSet = dm.getProcedures(CatalogName,SchemaName,ProcName);
aResultSet.next();
if (aResultSet != null)
{
int pType = aResultSet.getInt("PROCEDURE_TYPE");
if (pType == DatabaseMetaData.procedureNoResult)
{
status = "false";
}
else if (pType == DatabaseMetaData.procedureReturnsResult)
{
status = "true";
}
else if (pType == DatabaseMetaData.procedureResultUnknown)
{
status = "true";
}
}
String xmlOutput = "";
xmlOutput = xmlOutput + "<RETURNSRESULTSET status=";
xmlOutput = xmlOutput + status;
xmlOutput = xmlOutput + "></RETURNSRESULTSET>";
return xmlOutput;
}
}
}
catch (Exception e)
{
String xmlOutput = "<RETURNSRESULTSET status=false></RETURNSRESULTSET>";
return xmlOutput;
}
return null;
}
public String TestOpen(Connection aConn)
{
try
{
if ((aConn!=null) && !aConn.isClosed())
{
String xmlOutput = "<TEST status=true</TEST>";
return xmlOutput;
}
else
{
String xmlOutput = "<TEST status=false</TEST>";
return xmlOutput;
}
}
catch (Exception e)
{
String xmlOutput = "<TEST status=false</TEST>";
return xmlOutput;
}
}
public String MarshallRecordsetIntoHTML(ResultSet aResultSet)
{
String xmlOutput = "";
try
{
if (aResultSet != null)
{
xmlOutput = xmlOutput + "<RESULTSET>";
xmlOutput = xmlOutput + "<FIELDS>";
ResultSetMetaData rMetaData = aResultSet.getMetaData();
boolean bUseProc = false;
int n = rMetaData.getColumnCount();
int someTypeFlags[] = new int[n];
for(int i = 1; i <= n; i++)
{
someTypeFlags[i - 1] = IsDefaultType;
xmlOutput = xmlOutput + "<FIELD";
xmlOutput = xmlOutput + " type=\"";
xmlOutput = xmlOutput + rMetaData.getColumnTypeName(i);
xmlOutput = xmlOutput + "\"";
xmlOutput = xmlOutput + " definedSize=\"-1\"";
xmlOutput = xmlOutput + " actualsize=\"-1\"";
xmlOutput = xmlOutput + " precision=\"";
xmlOutput = xmlOutput + rMetaData.getPrecision(i);
xmlOutput = xmlOutput + "\"";
xmlOutput = xmlOutput + " scale=\"";
xmlOutput = xmlOutput + rMetaData.getScale(i);
xmlOutput = xmlOutput + "\"";
xmlOutput = xmlOutput + "><NAME>";
String colName = rMetaData.getColumnName(i);
String colNameUpper = colName.toUpperCase();
if (colNameUpper.equals("TABLE_CAT"))
{
colName = "TABLE_CATALOG";
}
else if (colNameUpper.equals("TABLE_SCHEM"))
{
colName = "TABLE_SCHEMA";
}
else if (colNameUpper.equals("PROCEDURE_CAT"))
{
colName = "PROCEDURE_CATALOG";
bUseProc = true;
}
else if (colNameUpper.equals("PROCEDURE_SCHEM"))
{
colName = "PROCEDURE_SCHEMA";
bUseProc = true;
}
else if (colNameUpper.equals("COLUMN_TYPE"))
{
if (bUseProc)
{
colName = "PARAMETER_TYPE";
someTypeFlags[i - 1] = IsParamType;
}
else
{
someTypeFlags[i - 1] = IsDataType;
}
}
else if (colNameUpper.equals("DATA_TYPE"))
{
someTypeFlags[i - 1] = IsDataType;
}
else if (colNameUpper.equals("COLUMN_NAME"))
{
if (bUseProc)
{
colName = "PARAMETER_NAME";
}
}
xmlOutput = xmlOutput + colName;
xmlOutput = xmlOutput + "</NAME></FIELD>";
}
xmlOutput = xmlOutput + "</FIELDS>";
xmlOutput = xmlOutput + "<ROWS>";
while (aResultSet.next())
{
xmlOutput = xmlOutput + "<ROW>";
for(int i = 1; i <= n; i++)
{
xmlOutput = xmlOutput + "<VALUE>";
String aObject = aResultSet.getString(i);
if (aObject != null)
{
if(someTypeFlags[i - 1] == IsParamType)
{
aObject = MapParameterType2UD(aObject);
}
else if(someTypeFlags[i - 1] == IsDataType)
{
String TypeName = aResultSet.getString("TYPE_NAME");
aObject = TypeName;
}
xmlOutput = xmlOutput + aObject;
}
xmlOutput = xmlOutput + "</VALUE>";
}
xmlOutput = xmlOutput + "</ROW>";
}
xmlOutput = xmlOutput + "</ROWS>";
xmlOutput = xmlOutput + "</RESULTSET>";
aResultSet.close();
}
}
catch (Exception e)
{
return HandleException(e);
}
return xmlOutput;
}
public String HandleException(Exception e)
{
String xmlOutput = "";
String message = "";
if (e instanceof java.lang.ClassNotFoundException)
{
message = e.getMessage() + " Class not found";
}
else
{
message = e.getMessage();
}
xmlOutput = xmlOutput + "<ERRORS>";
xmlOutput = xmlOutput + "<ERROR";
xmlOutput = xmlOutput + " Source=\"\"";
xmlOutput = xmlOutput + " Identification=\"\"";
xmlOutput = xmlOutput + " HelpFile=\"\"";
xmlOutput = xmlOutput + " HelpContext=\"\"";
xmlOutput = xmlOutput + "><DESCRIPTION>";
xmlOutput = xmlOutput + message;
xmlOutput = xmlOutput + "</DESCRIPTION></ERROR>";
xmlOutput = xmlOutput + "</ERRORS>";
return xmlOutput;
}
public String MapParameterType2UD(String parameterTypeName)
{
String retType="";
try
{
int iType = Integer.parseInt(parameterTypeName);
switch (iType)
{
case java.sql.DatabaseMetaData.procedureColumnIn:
{
retType="1";
break;
}
case java.sql.DatabaseMetaData.procedureColumnInOut:
{
retType="3";
break;
}
case java.sql.DatabaseMetaData.procedureColumnOut:
{
retType="2";
break;
}
case java.sql.DatabaseMetaData.procedureColumnReturn:
{
retType="4";
break;
}
case java.sql.DatabaseMetaData.procedureColumnResult:
{
retType="5";
break;
}
default:
{
retType = parameterTypeName;
break;
}
}
}
catch (Exception e)
{
retType = "";
}
return retType;
}
public String MapSQLType2Name(String typeIntName)
{
String retType="";
try
{
int iType = Integer.parseInt(typeIntName);
switch (iType)
{
case -5:
{
retType="bigint";
break;
}
case -2:
{
retType="binary";
break;
}
case -7:
{
retType="bit";
break;
}
case 1:
{
retType="char";
break;
}
case 91:
{
retType="date";
break;
}
case 3:
{
retType = "decimal";
break;
}
case 8:
{
retType = "double";
break;
}
case 6:
{
retType = "float";
break;
}
case 4:
{
retType = "integer";
break;
}
case -4:
{
retType = "longvarbinary";
break;
}
case -1:
{
retType = "longvarchar";
break;
}
case 0:
{
retType = "null";
break;
}
case 2:
{
retType = "numeric";
break;
}
case 1111:
{
retType = "other";
break;
}
case 7:
{
retType = "real";
break;
}
case 5:
{
retType = "smallint";
break;
}
case 92:
{
retType = "time";
break;
}
case 93:
{
retType = "timestamp";
break;
}
case -6:
{
retType = "tinyint";
break;
}
case -3:
{
retType = "varbinary";
break;
}
case 12:
{
retType = "varchar";
break;
}
default:
{
retType = typeIntName;
break;
}
}
}
catch (Exception e)
{
retType = "";
}
return retType;
}
%>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -