Stored procedures Can';t使用ExecuteNonQuery()和存储过程插入数据库
语言:C#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
技能:初学者
工具: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)