日期:2014-05-19  浏览次数:20686 次

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