读书人

在windows程序中调用存储过程的有关问

发布时间: 2012-01-14 20:02:35 作者: rapoo

在windows程序中调用存储过程的问题
我用的是VS2005和自带的sql2005

我调用存储过程将一条记录写入数据库,VS下直接运行存储过程可以在数据库中永久插入记录,在程序运行时也调用相同的存储过程插入记录了可以显示出来,但关闭程序发现数据库中没有添加任何记录。
程序我是这么写的
public bool InsertPriority(ref SqlConnection myConn,string newPriority)
{
SqlCommand cmd = new SqlCommand( "InsertPriority ", myConn);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter p = new SqlParameter( "@PriorityTitle ", newPriority);
cmd.Parameters.Add(p);
try
{
cmd.ExecuteNonQuery();
}
catch
{
return false;
}
return true;
}

请大家帮帮忙,这个问题困扰我好几天了

[解决办法]
newPriority有没有赋值啊
[解决办法]
呵呵 你试试插入数据后 重新连接数据库看看有结果嘛?? 一般在程序里显示出来了 说明数据库有数据了
[解决办法]
你在SqlParameter p = new SqlParameter( "@PriorityTitle ", newPriority);后面加上

p.Direction = ParameterDirection.Input;

试试。
[解决办法]
SqlParameter param = new SqlParameter( "@PriorityTitle ", SqlDbType.VarChar, 20);
param.Value = newPriority;
p.Direction = ParameterDirection.Input;

可能是LZ在实例化参数的时候没有指定参数大小 和类型
[解决办法]
public bool InsertPriority(ref SqlConnection myConn,string newPriority)
{
SqlCommand cmd = new SqlCommand( "InsertPriority ", myConn);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter p = new SqlParameter( "@PriorityTitle ", newPriority);
cmd.Parameters.Add(p);
try
{
cmd.ExecuteNonQuery();
}
catch
{
return false;
}
return true;
}


--------------------------

你这样可以是没有执行cmd.ExecuteNonQuery();

试下
public bool InsertPriority(ref SqlConnection myConn,string newPriority)


{

try
{
SqlCommand cmd = new SqlCommand( "InsertPriority ", myConn);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter p = new SqlParameter( "@PriorityTitle ", newPriority);
cmd.Parameters.Add(p);

cmd.ExecuteNonQuery();
}
catch
{
return false;
}
return true;
}

读书人网 >C#

热点推荐