更新数据库里的数据时发生这样的提示,网上有相同的问题的解释,但是我检查之后发现代码没有跟网上解释的一样的第一步的代码:public static void Proc(string strCommand, SqlParameter[] parameters, bool isText, out object value)
{
using (SqlConnection con = DBOperation.CreateConnection())
{
SqlCommand cmd = null;
try
{
con.Open();
if (parameters != null)
{
cmd = DBOperation.CreateCommand(strCommand, con, parameters, isText);
}
else
{
cmd = DBOperation.CreateCommand(strCommand, con, null, isText);
} value = cmd.ExecuteScalar();
}
catch (Exception e)
{
throw new SystemException(e.Message, e);
}
finally
{
con.Close();
con.Dispose();
}
}
}
第二步的代码,调用第一步的代码:public object SetInfos(string strSql, SqlParameter[] parameters, bool isText)
{
object value = null;
DBOperation.Proc(strSql, parameters, isText, out value);
return value;
}
第三步,调用第二步的代码:public void Submit()
{
Operator operate = new Operator();
BaseOperate bOperate = new BaseOperate();
int isAdd = Convert.ToInt32(Request.QueryString["isAdd"].ToString());
string strSql = string.Empty; try
{
int value = -1;
string alert = string.Empty;
SqlParameter[] parameters = null; if (isAdd.Equals(1))
{
strSql = "m_add_t_novel";
parameters = new SqlParameter[]{
DBOperation.CreateParameter("@n_name",SqlDbType.NChar,30,ParameterDirection.Input,this.txtNovelName.Value.ToString()),
DBOperation.CreateParameter("@n_gut",SqlDbType.NVarChar,4000,ParameterDirection.Input,this.txtGut.Value.ToString())
};
alert = "创建小说";
}
if (isAdd.Equals(2))
{
strSql = "m_update_t_novel";
int n_id = Convert.ToInt32(Request.QueryString["n_id"].ToString()); parameters = new SqlParameter[]{
DBOperation.CreateParameter("@n_id",SqlDbType.Int,4,ParameterDirection.Input,n_id),
DBOperation.CreateParameter("@n_name",SqlDbType.NChar,30,ParameterDirection.Input,this.txtNovelName.Value.ToString()),
DBOperation.CreateParameter("@n_gut",SqlDbType.NVarChar,4000,ParameterDirection.Input,this.txtGut.Value.ToString()),
DBOperation.CreateParameter("@n_modDate",SqlDbType.DateTime,8,ParameterDirection.Input,DateTime.Now)
};
alert = "修改小说";
}
value = Convert.ToInt32(bOperate.SetInfos(strSql, parameters, false));
if (0 < value)
{
alert = string.Format(alert + "{0}", "成功!");
}
else
{
alert = string.Format(alert + "{0}", "失败!");
}
operate.showMsg(this.Page, alert);
}
catch (Exception ex)
{
operate.showMsg(this.Page, ex.Message);
}
}
以下这段代码是创建SqlCommand的,网上的解释是这里出的问题,但是我水平有限,不明白private static SqlCommand CreateCommand(string strCommand, SqlConnection con, SqlParameter[] parameters, bool isText)
{
SqlCommand cmd = new SqlCommand(strCommand, con);
if (!isText)
{
cmd.CommandType = CommandType.StoredProcedure;
}
if (parameters != null)
{
foreach (SqlParameter parameter in parameters)
{
cmd.Parameters.Add(parameter);
}
} return cmd;
}
{
using (SqlConnection con = DBOperation.CreateConnection())
{
SqlCommand cmd = null;
try
{
con.Open();
if (parameters != null)
{
cmd = DBOperation.CreateCommand(strCommand, con, parameters, isText);
}
else
{
cmd = DBOperation.CreateCommand(strCommand, con, null, isText);
} value = cmd.ExecuteScalar();
}
catch (Exception e)
{
throw new SystemException(e.Message, e);
}
finally
{
con.Close();
con.Dispose();
}
}
}
第二步的代码,调用第一步的代码:public object SetInfos(string strSql, SqlParameter[] parameters, bool isText)
{
object value = null;
DBOperation.Proc(strSql, parameters, isText, out value);
return value;
}
第三步,调用第二步的代码:public void Submit()
{
Operator operate = new Operator();
BaseOperate bOperate = new BaseOperate();
int isAdd = Convert.ToInt32(Request.QueryString["isAdd"].ToString());
string strSql = string.Empty; try
{
int value = -1;
string alert = string.Empty;
SqlParameter[] parameters = null; if (isAdd.Equals(1))
{
strSql = "m_add_t_novel";
parameters = new SqlParameter[]{
DBOperation.CreateParameter("@n_name",SqlDbType.NChar,30,ParameterDirection.Input,this.txtNovelName.Value.ToString()),
DBOperation.CreateParameter("@n_gut",SqlDbType.NVarChar,4000,ParameterDirection.Input,this.txtGut.Value.ToString())
};
alert = "创建小说";
}
if (isAdd.Equals(2))
{
strSql = "m_update_t_novel";
int n_id = Convert.ToInt32(Request.QueryString["n_id"].ToString()); parameters = new SqlParameter[]{
DBOperation.CreateParameter("@n_id",SqlDbType.Int,4,ParameterDirection.Input,n_id),
DBOperation.CreateParameter("@n_name",SqlDbType.NChar,30,ParameterDirection.Input,this.txtNovelName.Value.ToString()),
DBOperation.CreateParameter("@n_gut",SqlDbType.NVarChar,4000,ParameterDirection.Input,this.txtGut.Value.ToString()),
DBOperation.CreateParameter("@n_modDate",SqlDbType.DateTime,8,ParameterDirection.Input,DateTime.Now)
};
alert = "修改小说";
}
value = Convert.ToInt32(bOperate.SetInfos(strSql, parameters, false));
if (0 < value)
{
alert = string.Format(alert + "{0}", "成功!");
}
else
{
alert = string.Format(alert + "{0}", "失败!");
}
operate.showMsg(this.Page, alert);
}
catch (Exception ex)
{
operate.showMsg(this.Page, ex.Message);
}
}
以下这段代码是创建SqlCommand的,网上的解释是这里出的问题,但是我水平有限,不明白private static SqlCommand CreateCommand(string strCommand, SqlConnection con, SqlParameter[] parameters, bool isText)
{
SqlCommand cmd = new SqlCommand(strCommand, con);
if (!isText)
{
cmd.CommandType = CommandType.StoredProcedure;
}
if (parameters != null)
{
foreach (SqlParameter parameter in parameters)
{
cmd.Parameters.Add(parameter);
}
} return cmd;
}
解决方案 »
- Server Error in '/' Application.
- 结果怎么这样啊,该如何改?
- asp.net如何读取跨行跨列的word表格
- reflector反编译出源代码后没有窗体,如何把反编译出来的代码重新组织成一个能运行的项目啊
- 调用存储过程的问题
- feiyun0112兄能否帮我再帮我看看这个过程?
- 请问哪儿有用asp.net实现的msdn.microsoft.com/developercenters/站点左边的菜单栏源码?谢谢啦!
- 持续部署服务器中的COPY文件到网站正式服务器的问题
- 请问在ASP.net中怎样用css??????
- 进行SEO优化,网站发布遇到的问题~System.Web.Http.WebHost, Version=4.0.0.0
- Linq问题:自动生成的实体类中那些代码是无用的?(一般用不到的代码)
- asp.net 如何显示警告信息
我查看过了,没有不一致啊,主要是更新数据那个存储过程if (isAdd.Equals(2))
{
strSql = "m_update_t_novel";
int n_id = Convert.ToInt32(Request.QueryString["n_id"].ToString()); parameters = new SqlParameter[]{
DBOperation.CreateParameter("@n_id",SqlDbType.Int,4,ParameterDirection.Input,n_id),
DBOperation.CreateParameter("@n_name",SqlDbType.NChar,30,ParameterDirection.Input,this.txtNovelName.Value.ToString()),
DBOperation.CreateParameter("@n_gut",SqlDbType.NVarChar,4000,ParameterDirection.Input,this.txtGut.Value.ToString()),
DBOperation.CreateParameter("@n_modDate",SqlDbType.DateTime,8,ParameterDirection.Input,DateTime.Now)
};
alert = "修改小说";
}
我的存储过程里面更新只有4个参数CREATE PROCEDURE m_update_t_novel
@n_id int,
@n_name nchar(30),
@n_gut nvarchar(4000)
AS
BEGIN TRAN
update t_novel set n_name=@n_name,n_gut=@n_gut where n_id=@n_id
select @@RowCount
COMMIT TRAN
GO
@n_id int,
@n_name nchar(30),
@n_gut nvarchar(4000)
parameters = new SqlParameter[]{
DBOperation.CreateParameter("@n_id",SqlDbType.Int,4,ParameterDirection.Input,n_id),
DBOperation.CreateParameter("@n_name",SqlDbType.NChar,30,ParameterDirection.Input,this.txtNovelName.Value.ToString()),
DBOperation.CreateParameter("@n_gut",SqlDbType.NVarChar,4000,ParameterDirection.Input,this.txtGut.Value.ToString()),
DBOperation.CreateParameter("@n_modDate",SqlDbType.DateTime,8,ParameterDirection.Input,DateTime.Now)
};
少了@n_modDate