Не удается вставить в базу данных с помощью ExecuteNonQuery () и хранимой процедуры - PullRequest
1 голос
/ 22 декабря 2011

Язык: C #
Умение: Начинающий
Инструмент: Visual Studio 2010

Hello 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"

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)
...