gpt4 book ai didi

c# - 调用存储过程 SQL

转载 作者:太空宇宙 更新时间:2023-11-03 15:02:13 24 4
gpt4 key购买 nike

我正在尝试登录到 SQL 并调用数据库存储过程,但我得到了一些我不太理解的输出。这是我的代码:

using System;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Web;

public partial class Sendcode3 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
HttpRequest currentRequest = HttpContext.Current.Request;
String id = Server.UrlEncode(Request.QueryString["id"]);
String pw = Server.UrlEncode(Request.QueryString["pw"]);
String ip = "127.0.0.1";//currentRequest.ServerVariables["HTTP_X_FORWARDED_FOR"];
int ret = 0;
//if (ip == null || ip.ToLower() == "unknown")
// ip = currentRequest.ServerVariables["REMOTE_ADDR"];
//if (id == "")
// Response.Write("-99");

try
{
string connString = ConfigurationManager.ConnectionStrings["RohanUser"].ConnectionString;
SqlConnection sqlConn = new SqlConnection(connString);
string query = "call [dbo].[ROHAN3_SendCode](@id,@pw,@ip,@ret)";
SqlCommand myCommand = new SqlCommand(query);
myCommand.Parameters.AddWithValue("id", id);
myCommand.Parameters.AddWithValue("pw", pw);
myCommand.Parameters.AddWithValue("ip", ip);
myCommand.Parameters.Add("ret", SqlDbType.Int).Direction = ParameterDirection.Output;

myCommand.Connection = sqlConn;
sqlConn.Open();
if (myCommand.ExecuteNonQuery() > 0)
{
//ret = int.Parse(myCommand.Parameters["ret"].Value.ToString());
ret = -202;
}
myCommand.Connection.Close();
sqlConn.Close();

Response.Write(ret);
}
catch (Exception ex)
{
Response.Write(ex.ToString());
}
}
}

我得到的输出如下:

System.Data.SqlClient.SqlException (0x80131904): Incorrect syntax near '.'. at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption) at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest) at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry) at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource`1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry) at System.Data.SqlClient.SqlCommand.ExecuteNonQuery() at Sendcode3.Page_Load(Object sender, EventArgs e) in c:\Users\Mihai\Documents\Visual Studio 2017\WebSites\RohanAuth\sendcode3.aspx.cs:line 34 ClientConnectionId:860145ab-56e5-496a-8d1a-ea39cf2c93e1 Error Number:102,State:1,Class:15

我错过了什么?我似乎无法弄清楚问题是什么

最佳答案

问题是添加了架构名称 dbocall 关键字。您也不需要像那样提及输入参数。去掉它,因为这是默认模式,你的命令应该是

string query = "[ROHAN3_SendCode]";

有关详细信息,请参阅 How to: Execute a Stored Procedure that Returns Rows (或)使用您的问题标题在 Google 中搜索

关于c# - 调用存储过程 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45672487/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com