C# 如何在ASP.Net中执行更新SQL脚本

C# 如何在ASP.Net中执行更新SQL脚本,c#,asp.net,sql,sql-server,C#,Asp.net,Sql,Sql Server,我有这段代码来执行ASP.Net中的存储过程(更新SP),不幸的是,当我运行代码时,记录没有更新 这是我的代码: using (SqlConnection sqlConnection = Connt.GetConnection(TblName)) { sqlConnection.Open(); using (SqlDataAdapter adapter = new SqlDataAdapter(SqlScript, sqlConnection))

我有这段代码来执行ASP.Net中的存储过程(更新SP),不幸的是,当我运行代码时,记录没有更新

这是我的代码:

using (SqlConnection sqlConnection = Connt.GetConnection(TblName))
{
        sqlConnection.Open();
        using (SqlDataAdapter adapter = new SqlDataAdapter(SqlScript, sqlConnection))
        {
            adapter.SelectCommand.CommandType = CommandType.StoredProcedure;
            adapter.SelectCommand.Parameters.AddRange(SqlParam);
        }
}
其中,
SqlScript
是存储过程名称的变量,
SqlParam
是参数

请帮我找出我的代码有什么问题。

试试:

using (var conn = new SqlConnection(connectionString))
using (var command = new SqlCommand("ProcedureName", conn) { 
                           CommandType = CommandType.StoredProcedure }) {
   conn.Open();
   command.ExecuteNonQuery();
   conn.Close();
}
使用参数:

command.Parameters.Add(new SqlParameter("@ID", 123));
尝试:

使用参数:

command.Parameters.Add(new SqlParameter("@ID", 123));

嗨,你可以试试这样的

SqlConnection sqlConnection = new SqlConnection();
SqlCommand sqlCommand = new SqlCommand();
sqlConnection.ConnectionString = "Data Source=SERVERNAME;Initial Catalog=DATABASENAME;Integrated Security=True";

public void samplefunct(params object[] adparam)
   {
       sqlConnection.Open();
       sqlCommand.Connection = sqlConnection;
       sqlCommand.CommandType = CommandType.StoredProcedure;
       sqlCommand.CommandText = "SPName";

       sqlCommand.Parameters.Add("@param1", SqlDbType.VarChar).Value = adparam[0];
       sqlCommand.Parameters.Add("@param2", SqlDbType.VarChar).Value = adparam[1];
       sqlCommand.Parameters.Add("@Param3", SqlDbType.VarChar).Value = adparam[2];
       sqlCommand.ExecuteNonQuery();
}

嗨,你可以试试这样的

SqlConnection sqlConnection = new SqlConnection();
SqlCommand sqlCommand = new SqlCommand();
sqlConnection.ConnectionString = "Data Source=SERVERNAME;Initial Catalog=DATABASENAME;Integrated Security=True";

public void samplefunct(params object[] adparam)
   {
       sqlConnection.Open();
       sqlCommand.Connection = sqlConnection;
       sqlCommand.CommandType = CommandType.StoredProcedure;
       sqlCommand.CommandText = "SPName";

       sqlCommand.Parameters.Add("@param1", SqlDbType.VarChar).Value = adparam[0];
       sqlCommand.Parameters.Add("@param2", SqlDbType.VarChar).Value = adparam[1];
       sqlCommand.Parameters.Add("@Param3", SqlDbType.VarChar).Value = adparam[2];
       sqlCommand.ExecuteNonQuery();
}

嗨,谢谢你的回复。如何使用您给定的代码向SP添加参数。您好,谢谢您的回复。如何使用给定的代码向SP添加参数。主要问题是您有一个更新存储过程,并且正在使用DataAdapter的SelectCommand属性。构造函数还将SqlScript分配给SelectCommand。是的,这是主要错误。应改用SQLCommand。主要问题是您有一个更新存储过程,并且正在使用DataAdapter的SelectCommand属性。构造函数还将SqlScript分配给SelectCommand。是的,这是主要错误。应该改为使用SQLCommand。只需对我的代码稍作调整即可,但此代码包含您需要的功能和逻辑。干杯谢谢你的投票,希望对你有帮助lot@Angelo:回答不错+1,我这里有一个问题,您如何知道
adparam
对象数组中只有3个参数?当用户只向
samplefunct
函数发送两个参数时会发生什么情况?啊,您必须发送与samplefunct(param1,param2,param3)相同的参数计数,否则会出现错误,除非您输入类似try的内容catch@Angelo:可以,但当您使用
params
时,它不允许任何参数,即使在编译时,它也不会让用户知道,因此我认为在继续操作之前,最好使用
.Length
属性检查参数的计数,否则当参数小于3 IMO时,它可能会导致异常。只需对我的代码进行少量调整即可,但此代码包含您需要的功能和逻辑。干杯谢谢你的投票,希望对你有帮助lot@Angelo:回答不错+1,我这里有一个问题,您如何知道
adparam
对象数组中只有3个参数?当用户只向
samplefunct
函数发送两个参数时会发生什么情况?啊,您必须发送与samplefunct(param1,param2,param3)相同的参数计数,否则会出现错误,除非您输入类似try的内容catch@Angelo:可以,但当您使用
params
时,它不允许任何参数,即使在编译时,它也不会让用户知道,因此我认为在继续操作之前,最好使用
.Length
属性检查参数的计数,否则当参数小于3时可能会导致异常。