Stored procedures Can';t使用ExecuteNonQuery()和存储过程插入数据库

Stored procedures Can';t使用ExecuteNonQuery()和存储过程插入数据库,stored-procedures,executenonquery,Stored Procedures,Executenonquery,语言:C# 技能:初学者 工具:VisualStudio2010 你好,StackOverflow 我制作了一个存储过程,用于将数据插入表中 当我在服务器资源管理器中执行存储过程并将其插入到该表中时,它工作正常 但是当我从代码中调用这个存储过程时,我得到了输出“1行受影响”,但没有数据插入到表中 我对正在发生的事感到困惑 private void btn_AssignTeacher_Click(object sender, EventArgs e) { bool result = fals

语言:C#
技能:初学者
工具:VisualStudio2010

你好,StackOverflow

我制作了一个存储过程,用于将数据插入表中

当我在服务器资源管理器中执行存储过程并将其插入到该表中时,它工作正常

但是当我从代码中调用这个存储过程时,我得到了输出“1行受影响”,但没有数据插入到表中

我对正在发生的事感到困惑

private void btn_AssignTeacher_Click(object sender, EventArgs e)
{
   bool result = false;

   SqlCommand cmd = new SqlCommand("sprocInsert");

   int teacherid = comboBox_teachername.SelectedIndex +1;
   int coursesinfoid = comboBox_coursename.SelectedIndex+1;
   int daysid = comboBox_day.SelectedIndex+1;
   int slotsid = comboBox_slot.SelectedIndex+1;

   cmd.Parameters.Add("@coursesinfoid", SqlDbType.Int).Value = coursesinfoid;
   cmd.Parameters.Add("@daysid", SqlDbType.Int).Value = daysid;
   cmd.Parameters.Add("@slotsid", SqlDbType.Int).Value = slotsid;
   cmd.Parameters.Add("@teacherid", SqlDbType.Int).Value = teacherid;

   result = AssignCoursesMgr.Insert(cmd);

   if (result == true) 
      MessageBox.Show("teacher assign successfully");
}

class AssignCoursesManager
{
   DBLayer DBworks;

   public bool Insert(SqlCommand cmd)
   {
        DBworks = new DBLayer();
        cmd.CommandType = System.Data.CommandType.StoredProcedure;
        return DBworks.InsertData(cmd);
    }
}

public bool InsertData(SqlCommand cmd)
    {
        int result = 0;
        SqlConnection conn = CreateConnection(ConnectionString);
        try
        {
            cmd.Connection = conn;
            cmd.Connection.Open();
            result = cmd.ExecuteNonQuery();
        }
        catch (SqlException exc)
        {
            MessageBox.Show(exc.Message);
        }
        finally
        {
            conn.Close();
            cmd.Dispose();
        }
        if (result > 0)
            return true;
        else return false;
    }
这是“sprocInsert”


您是否在执行程序后提交?使用
using(){}
确保您的更改已提交“提交”是什么意思?我使用了Try/Catch而不是“using(){}”看起来像是运行了更改,但没有提交。是的,所有代码都执行..我通过调试器进行了检查,结果是“1行受影响”…但数据库中没有条目?只是一个说明:我个人会定义类型(text/stored proc)就在我创建
SqlCommand
的地方-以后不是两个或三个方法调用。。。。。
ALTER PROCEDURE dbo.sprocInsert
(
 @coursesinfoid int,
 @teacherid int,
 @daysid int,
 @slotsid int
)
AS
 INSERT INTO schedule (coursesinfoid,teacherid,daysid,slotsid)
 VALUES(@coursesinfoid,@teacherid,@daysid,@slotsid)