11 个解决方案
#1
有做的人没有??
#2
怎么样在Web上做一个像 Query Analyzer 工具的东西,用户可以自己组织SQL语句,执行并返回数据集,动态生成表格显示出来?
#3
做过的同志出来指点一下?
#4
个人感觉这个应该不是很难的。
但是,你不可能让用户自己去输入SQL语句吧?(要求也太高了。)
真正的难点和重点在于,如何把界面做得更人性化。
如果你一定要做,那么大概思路是:
连接这些就不说了。
获得字段数,循环读出字段名,生成表头。
根据字段数,循环读出第一条记录,放进表格的第二行(第一行是表头)。
循环记录数,读取所有记录。(实际上这个才是外层循环。)
生成表格脚。
具体实现你多试试就OK了。表格应用好才行!如果搞不清楚TD/TR,那还是先去熟悉熟悉HTML再说。我到目前为止还不能得心应手地写表格代码呢。惭愧,惭愧。 :_)
但是,你不可能让用户自己去输入SQL语句吧?(要求也太高了。)
真正的难点和重点在于,如何把界面做得更人性化。
如果你一定要做,那么大概思路是:
连接这些就不说了。
获得字段数,循环读出字段名,生成表头。
根据字段数,循环读出第一条记录,放进表格的第二行(第一行是表头)。
循环记录数,读取所有记录。(实际上这个才是外层循环。)
生成表格脚。
具体实现你多试试就OK了。表格应用好才行!如果搞不清楚TD/TR,那还是先去熟悉熟悉HTML再说。我到目前为止还不能得心应手地写表格代码呢。惭愧,惭愧。 :_)
#5
to Estyle(靳田)
其实客户没有这样的要求,我只是为了方便自己维护而已。
你是怎么得到字段名的???比如 有别名的字段?
其实客户没有这样的要求,我只是为了方便自己维护而已。
你是怎么得到字段名的???比如 有别名的字段?
#6
获取字段名的最简单的方法:
Recordset(i).Name
i循环,从0到Recordset.Fields.Count-1
别名?你是说的“友好字段名”吗?这个我还没有注意过。
试试再说。————估计应该可以直接获取。
Recordset(i).Name
i循环,从0到Recordset.Fields.Count-1
别名?你是说的“友好字段名”吗?这个我还没有注意过。
试试再说。————估计应该可以直接获取。
#7
我试过了,如果你使用友好列标题,可以直接获取字段名:
我用以下语句查询了northwind数据库:
select 定单号=orderid from orders
然后通过rs(0).name获得的是“定单号”!OK?
我用以下语句查询了northwind数据库:
select 定单号=orderid from orders
然后通过rs(0).name获得的是“定单号”!OK?
#8
<HTML>
<Title>SOL语句执行示例 </Title>
<Body BgColor=#aaaaff>
<Form Name=FormGet1 Method=Post Action="Ch12_3.asp">
<FieldSet>
<Legend>请输入 Select SQL语句</Legend>
指令:<Input type="text" name="SQL_Statement" Size=60> <p>
<Input type="Submit" Value="送出"> <p>
</FieldSet>
</Form>
<Hr>
<%
SQL_Statement=Request("SQL_Statement")
if SQL_Statement<>Empty then
'声明Connection(数据库链接)对象
Set DBConnection= Server.CreateObject("ADODB.Connection")
'设置与数据库链接的链接字符串
ConnectionString ="Provider=SQLOLEDB.1;Server=W2k;UID=SiteAdmin;PWD=12345"
'打开链接数据库的信道
DBConnection.Open ConnectionString
'声明使用Recordset对象接收SQL查询所返回的值
Set RS=DBConnection.Execute(SQL_Statement)
Response.Write "<CENTER><TABLE BORDER=1><TR BGCOLOR=#00FFFF>"
For i=0 to RS.Fields.Count-1
Response.Write "<TD>" & RS(i).Name & "</TD>"
Next
While not RS.Eof
Row = "<TR BGCOLOR=#FFFF00> "
For j=0 to RS.Fields.Count-1
'使用RS(j)取出第j个字段的数据
Row = Row & "<TD>" & Rs(j) & "</TD>"
Next
Response.Write Row & "</TR>"
RS.MoveNext '移到下一条
Wend
Response.Write "</TABLE></CENTER>"
end if
%>
</Body>
</HTML>
<Title>SOL语句执行示例 </Title>
<Body BgColor=#aaaaff>
<Form Name=FormGet1 Method=Post Action="Ch12_3.asp">
<FieldSet>
<Legend>请输入 Select SQL语句</Legend>
指令:<Input type="text" name="SQL_Statement" Size=60> <p>
<Input type="Submit" Value="送出"> <p>
</FieldSet>
</Form>
<Hr>
<%
SQL_Statement=Request("SQL_Statement")
if SQL_Statement<>Empty then
'声明Connection(数据库链接)对象
Set DBConnection= Server.CreateObject("ADODB.Connection")
'设置与数据库链接的链接字符串
ConnectionString ="Provider=SQLOLEDB.1;Server=W2k;UID=SiteAdmin;PWD=12345"
'打开链接数据库的信道
DBConnection.Open ConnectionString
'声明使用Recordset对象接收SQL查询所返回的值
Set RS=DBConnection.Execute(SQL_Statement)
Response.Write "<CENTER><TABLE BORDER=1><TR BGCOLOR=#00FFFF>"
For i=0 to RS.Fields.Count-1
Response.Write "<TD>" & RS(i).Name & "</TD>"
Next
While not RS.Eof
Row = "<TR BGCOLOR=#FFFF00> "
For j=0 to RS.Fields.Count-1
'使用RS(j)取出第j个字段的数据
Row = Row & "<TD>" & Rs(j) & "</TD>"
Next
Response.Write Row & "</TR>"
RS.MoveNext '移到下一条
Wend
Response.Write "</TABLE></CENTER>"
end if
%>
</Body>
</HTML>
#9
不知道我的理解对不对?
#10
对的,楼上的朋友的代码就是你说需要的。
虽然我觉得这些代码还是应该自己动手比较好……
虽然我觉得这些代码还是应该自己动手比较好……
#11
谢谢各位了,我怎么没有想到循环RS。惭愧:)
结帐
结帐
#1
有做的人没有??
#2
怎么样在Web上做一个像 Query Analyzer 工具的东西,用户可以自己组织SQL语句,执行并返回数据集,动态生成表格显示出来?
#3
做过的同志出来指点一下?
#4
个人感觉这个应该不是很难的。
但是,你不可能让用户自己去输入SQL语句吧?(要求也太高了。)
真正的难点和重点在于,如何把界面做得更人性化。
如果你一定要做,那么大概思路是:
连接这些就不说了。
获得字段数,循环读出字段名,生成表头。
根据字段数,循环读出第一条记录,放进表格的第二行(第一行是表头)。
循环记录数,读取所有记录。(实际上这个才是外层循环。)
生成表格脚。
具体实现你多试试就OK了。表格应用好才行!如果搞不清楚TD/TR,那还是先去熟悉熟悉HTML再说。我到目前为止还不能得心应手地写表格代码呢。惭愧,惭愧。 :_)
但是,你不可能让用户自己去输入SQL语句吧?(要求也太高了。)
真正的难点和重点在于,如何把界面做得更人性化。
如果你一定要做,那么大概思路是:
连接这些就不说了。
获得字段数,循环读出字段名,生成表头。
根据字段数,循环读出第一条记录,放进表格的第二行(第一行是表头)。
循环记录数,读取所有记录。(实际上这个才是外层循环。)
生成表格脚。
具体实现你多试试就OK了。表格应用好才行!如果搞不清楚TD/TR,那还是先去熟悉熟悉HTML再说。我到目前为止还不能得心应手地写表格代码呢。惭愧,惭愧。 :_)
#5
to Estyle(靳田)
其实客户没有这样的要求,我只是为了方便自己维护而已。
你是怎么得到字段名的???比如 有别名的字段?
其实客户没有这样的要求,我只是为了方便自己维护而已。
你是怎么得到字段名的???比如 有别名的字段?
#6
获取字段名的最简单的方法:
Recordset(i).Name
i循环,从0到Recordset.Fields.Count-1
别名?你是说的“友好字段名”吗?这个我还没有注意过。
试试再说。————估计应该可以直接获取。
Recordset(i).Name
i循环,从0到Recordset.Fields.Count-1
别名?你是说的“友好字段名”吗?这个我还没有注意过。
试试再说。————估计应该可以直接获取。
#7
我试过了,如果你使用友好列标题,可以直接获取字段名:
我用以下语句查询了northwind数据库:
select 定单号=orderid from orders
然后通过rs(0).name获得的是“定单号”!OK?
我用以下语句查询了northwind数据库:
select 定单号=orderid from orders
然后通过rs(0).name获得的是“定单号”!OK?
#8
<HTML>
<Title>SOL语句执行示例 </Title>
<Body BgColor=#aaaaff>
<Form Name=FormGet1 Method=Post Action="Ch12_3.asp">
<FieldSet>
<Legend>请输入 Select SQL语句</Legend>
指令:<Input type="text" name="SQL_Statement" Size=60> <p>
<Input type="Submit" Value="送出"> <p>
</FieldSet>
</Form>
<Hr>
<%
SQL_Statement=Request("SQL_Statement")
if SQL_Statement<>Empty then
'声明Connection(数据库链接)对象
Set DBConnection= Server.CreateObject("ADODB.Connection")
'设置与数据库链接的链接字符串
ConnectionString ="Provider=SQLOLEDB.1;Server=W2k;UID=SiteAdmin;PWD=12345"
'打开链接数据库的信道
DBConnection.Open ConnectionString
'声明使用Recordset对象接收SQL查询所返回的值
Set RS=DBConnection.Execute(SQL_Statement)
Response.Write "<CENTER><TABLE BORDER=1><TR BGCOLOR=#00FFFF>"
For i=0 to RS.Fields.Count-1
Response.Write "<TD>" & RS(i).Name & "</TD>"
Next
While not RS.Eof
Row = "<TR BGCOLOR=#FFFF00> "
For j=0 to RS.Fields.Count-1
'使用RS(j)取出第j个字段的数据
Row = Row & "<TD>" & Rs(j) & "</TD>"
Next
Response.Write Row & "</TR>"
RS.MoveNext '移到下一条
Wend
Response.Write "</TABLE></CENTER>"
end if
%>
</Body>
</HTML>
<Title>SOL语句执行示例 </Title>
<Body BgColor=#aaaaff>
<Form Name=FormGet1 Method=Post Action="Ch12_3.asp">
<FieldSet>
<Legend>请输入 Select SQL语句</Legend>
指令:<Input type="text" name="SQL_Statement" Size=60> <p>
<Input type="Submit" Value="送出"> <p>
</FieldSet>
</Form>
<Hr>
<%
SQL_Statement=Request("SQL_Statement")
if SQL_Statement<>Empty then
'声明Connection(数据库链接)对象
Set DBConnection= Server.CreateObject("ADODB.Connection")
'设置与数据库链接的链接字符串
ConnectionString ="Provider=SQLOLEDB.1;Server=W2k;UID=SiteAdmin;PWD=12345"
'打开链接数据库的信道
DBConnection.Open ConnectionString
'声明使用Recordset对象接收SQL查询所返回的值
Set RS=DBConnection.Execute(SQL_Statement)
Response.Write "<CENTER><TABLE BORDER=1><TR BGCOLOR=#00FFFF>"
For i=0 to RS.Fields.Count-1
Response.Write "<TD>" & RS(i).Name & "</TD>"
Next
While not RS.Eof
Row = "<TR BGCOLOR=#FFFF00> "
For j=0 to RS.Fields.Count-1
'使用RS(j)取出第j个字段的数据
Row = Row & "<TD>" & Rs(j) & "</TD>"
Next
Response.Write Row & "</TR>"
RS.MoveNext '移到下一条
Wend
Response.Write "</TABLE></CENTER>"
end if
%>
</Body>
</HTML>
#9
不知道我的理解对不对?
#10
对的,楼上的朋友的代码就是你说需要的。
虽然我觉得这些代码还是应该自己动手比较好……
虽然我觉得这些代码还是应该自己动手比较好……
#11
谢谢各位了,我怎么没有想到循环RS。惭愧:)
结帐
结帐