LZ已经疯了 .net+Access 总是提示有一个参数未赋值,我就120分了,给100分啊。。
--------------------编程问答-------------------- return FuncAccess.ExecuteCmd(sqlStr.ToString()) > 0 ? true : false;/// <summary>
/// 执行命令并返回受影响行数
/// </summary>
/// <param name="sqlStr">sql语句</param>
/// <returns>返回受影响行数</returns>
public static int ExecuteCmd(string sqlStr) {
OleDbCommand odc = new OleDbCommand(sqlStr, Conn);
return odc.ExecuteNonQuery();
}
你这里都没有给你在SQL语句中定义的@赋值啊。OleDbParameter你写的这个根本就没有起到任何的作用 --------------------编程问答-------------------- 你的ExecuteCmd方法里没有用到参数化sql
--------------------编程问答-------------------- ExecuteCmd(string sqlStr)这个方法写的有问题 应该写成
--------------------编程问答-------------------- 你的这个方法没有将参数传入:
public static int ExecuteCmd(string sqlStr,params OleDbParameter[] odbParams) {
OleDbCommand odc = new OleDbCommand(sqlStr, Conn);
if(odbParams!=null)
{
odc.Parameters.AddRange(odbParams);
}
return odc.ExecuteNonQuery();
}
FuncAccess.ExecuteCmd
重载一个 --------------------编程问答-------------------- 你定义这个odp[] 与你执行的sql有毛关系吗?
return FuncAccess.ExecuteCmd(sqlStr.ToString())你这里没有带参数执行 --------------------编程问答-------------------- --------------------编程问答-------------------- return FuncAccess.ExecuteCmd(sqlStr.ToString(),odp) > 0 ? true : false;
public static int ExecuteCmd(string sqlStr,OleDbParameter[] paras) {
OleDbCommand odc = new OleDbCommand(sqlStr, Conn);
if(paras!=null){
odc.Parameters.AddRange(paras);
}
return odc.ExecuteNonQuery();
}
--------------------编程问答-------------------- 没有将参数传入 --------------------编程问答--------------------
说的对呀 --------------------编程问答-------------------- 提示未赋值你的数据为null oldDbParameter也是不会添加到里面去的 --------------------编程问答-------------------- Update改写
最后添加
odc.Parameters.AddRange(paras);
return改
return odc.ExecuteNonQuery();
下面的不要了 --------------------编程问答-------------------- 第二个方法中的Openconn()改成你的数据库连接方法
--------------------编程问答-------------------- FuncAccess.ExecuteCmd(sqlStr.ToString())
/// <summary>
/// 对数据库执行删除命令
/// </summary>
/// <param name="model">带有数据的实体类对象</param>
/// <returns>如果受影响行数>0则返回[True],反之则返回[False]</returns>
public static bool Update(PageTitle model)
{
StringBuilder sqlStr = new StringBuilder("Update [PageTitle] Set [Title] = @title, [KeyWords] = @keyWords, [Description] = @description ");
sqlStr.Append("Where [No] = @no");
OleDbParameter[] odp = new OleDbParameter[]{
new OleDbParameter("@title",model.PagTitle),
new OleDbParameter("@keyWords",model.PagKeyWords),
new OleDbParameter("@description",model.PagDescription),
new OleDbParameter("@no",model.PagNo)
};
return FuncAccess.ExecuteSQL(sqlStr.ToString(),odp) > 0 ? true : false;
}
/// <summary>
/// 执行一条语句,返回受影响的行。
/// </summary>
/// <param name="SQLString">SQL语句</param>
/// <param name="cmdParms">参数</param>
/// <returns>执行一条语句,返回受影响的行。</returns>
public static int ExecuteSQL(string SQLString, params SqlParameter[] cmdParms)
{
using (SqlConnection conn = Openconn())//改成你的数据库连接Conn
{
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = SQLString;
PrepareCommand(cmd, cmdParms);
return cmd.ExecuteNonQuery();
}
}
}
#endregion
#region 参数
private static void PrepareCommand(SqlCommand cmd, SqlParameter[] cmdParms)
{
if (cmdParms != null)
{
foreach (SqlParameter parameter in cmdParms)
{
if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) &&
(parameter.Value == null))
{
parameter.Value = DBNull.Value;
}
cmd.Parameters.Add(parameter);
}
}
}
#endregion 参数
sqlStr.ToString()可能不見得生成你要的 --------------------编程问答--------------------
OleDbParameter[] odp = new OleDbParameter[]{
new OleDbParameter("@title",model.PagTitle),
new OleDbParameter("@keyWords",model.PagKeyWords),
new OleDbParameter("@description",model.PagDescription),
new OleDbParameter("@no",model.PagNo)
};
先指定参数类型,然后在赋值。
类似于这样
--------------------编程问答-------------------- lz调试7遍 ? 该好好补补基础了 --------------------编程问答-------------------- 同上,加油。 --------------------编程问答--------------------
OleDbCommand oledb_comm = new OleDbCommand();
oledb_comm.CommandText = "select top 1 * from [Pos] where Pos=@Pos";
oledb_comm.Parameters.Add(new OleDbParameter("@Pos", OleDbType.VarChar, 20));//参数类型和长度,和数据库字段的设置一样
oledb_comm.Parameters[0].Value = posname;//posname是一个变量
oledb_comm.ExecuteNonQuery();
楼主犯傻了,接分 --------------------编程问答-------------------- 又看见你了哦 --------------------编程问答-------------------- LZ 已经进院了 --------------------编程问答--------------------
疯人院 --------------------编程问答-------------------- 楼主过度封装,最终弄成一个垃圾架构。
补充:.NET技术 , ASP.NET