【发布时间】:2011-04-12 14:44:46
【问题描述】:
我正在使用 SSMS 2008 和 VB。我是一个新手 VB 开发人员。我试图在我的 ASPX 页面上显示一个简单存储过程的结果。但我得到下面的错误。这是我的 ASPX 页面代码:
> MsgBox(GlobalFunctions.GlobalF.GetDevSQLServerStoredProcedure())
还有来自 GlobalF 命名空间的代码:
Public Shared Function GetDevSQLServerStoredProcedure()
Dim conn As SQLConnection
Dim DSPageData As New System.Data.DataSet
conn = New SQLConnection(ConfigurationSettings.AppSettings("AMDMetricsDevConnectionString"))
Dim cmd As New SQLCommand
cmd.CommandType = CommandType.StoredProcedure
cmd.Connection = conn
cmd.CommandText = "AllTableCount"
Dim da = New SQLDataAdapter(cmd)
da.Fill(DSPageData)
Return DSPageData
End Function
我的错误:
无法转换参数“提示” 输入“字符串”
[ArgumentException: 参数“提示” 无法转换为“字符串”类型。] Microsoft.VisualBasic.Interaction.MsgBox(对象 提示、MsgBoxStyle 按钮、对象 标题)+320
ASP.website_complaints_complainttrendinglist3_aspx.Main() 在 e:\inetpub\amdmetrics-d.web.abbott.com\wwwroot\Website\Complaints\ComplaintTrendingList3.aspx:113 ASP.website_complaints_complainttrendinglist3_aspx.Page_Load(对象 发件人,EventArgs E) 在 e:\inetpub\amdmetrics-d.web.abbott.com\wwwroot\Website\Complaints\ComplaintTrendingList3.aspx:60 System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, 对象 o, 对象 t, EventArgs e) +14 System.Web.Util.CalliEventHandlerDelegateProxy.Callback(对象 发件人,EventArgs e) +35
System.Web.UI.Control.OnLoad(EventArgs e) +99
System.Web.UI.Control.LoadRecursive() +50 System.Web.UI.Page.ProcessRequestMain(布尔值 includeStagesBeforeAsyncPoint,布尔值 includeStagesAfterAsyncPoint) +627
这个存储过程只返回我数据库中的记录数。但我想执行其他返回表的存储过程。我如何在没有错误的情况下实现它?
最后是我的新 SQL SP:
CREATE proc [dbo].PrintTestMsg AS BEGIN
PRINT 'HELLO'
PRINT 'WORLD'
PRINT 'PAGE3'
PRINT 'PAGE4'
END
SELECT * FROM SELECT (EXEC PrintTestMsg)
上面的选择在 SSMS 中出现语法错误。
下面的代码呢?我现在可以获取数据集吗?
private string DatasetToString(DataSet ds)
{
StringBuilder sb = new StringBuilder();
DataTable dt = ds.Tables(0);
foreach (DataRow dr in dt.Rows) {
sb.Append(“;”);
sb.Append(dt.Rows(1).ToString());
}
return sb.ToString();
}
【问题讨论】:
-
您正在返回一个数据集。您需要对该数据集进行一些解析以提取您希望 MsgBox 显示的字符串
-
哦,我明白你在说什么了。让我试试!
-
Prescott,我明白为什么我需要为 MsgBox 返回一个字符串。但是,我试图从 SSMS 中的存储过程中仅返回第一行,但出现语法错误。如何修改此查询以仅返回第一行?见上面的编辑
-
SELECT TOP 1 * FROM SELECT (EXEC PrintTestMsg) -
另外,你可能想稍微改变你的代码,'foreach(DataRow dr in Dt.Rows) { sb.Append(";"); sb.Append(dr(0).ToString()); {'
标签: asp.net sql vb.net stored-procedures namespaces