您的位置:首页 > 其它

insert 添加数据时, 参数 @**没有默认值

2012-05-24 18:37 155 查看
先说明一下:我使用的Access,添加数据是遇到的情况,由于遇到多次所以找了下原因。

下面是代码,有注释的就是问题所在。 这是在DbHelperOleDb.cs中的片段。

/// <summary>

/// 执行SQL语句,返回影响的记录数
/// </summary>
/// <param name="SQLString">SQL语句</param>
/// <returns>影响的记录数</returns>
public static int ExecuteSql(string SQLString, params OleDbParameter[] cmdParms)
{
using (OleDbConnection connection = new OleDbConnection(connectionString))
{
using (OleDbCommand cmd = new OleDbCommand())
{
try
{
PrepareCommand(cmd, connection, null, SQLString, cmdParms);
int rows = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
return rows;
}
catch (System.Data.OleDb.OleDbException E)
{
throw new Exception(E.Message);
}
}
}
}

private static void PrepareCommand(OleDbCommand cmd, OleDbConnection conn, OleDbTransaction trans, string cmdText, OleDbParameter[] cmdParms)
{
if (conn.State != ConnectionState.Open)
conn.Open();
cmd.Connection = conn;
cmd.CommandText = cmdText;
if (trans != null)
cmd.Transaction = trans;
cmd.CommandType = CommandType.Text;//cmdType;
if (cmdParms != null)
{
foreach (OleDbParameter parm in cmdParms)
{
//如果传递的参数没有对应的值,则设为null值 (自己写的)
if (parm.Direction == ParameterDirection.InputOutput || parm.Direction == ParameterDirection.Input && parm.Value == null)
{
parm.Value = DBNull.Value;
}
cmd.Parameters.Add(parm);
}

} }

还有可能是其他原因造成的,比如:

1)请把OleDbType.Char改成VarChar。

2)然后把参数添加的顺序和你SQL语句中的参数顺序保持一致。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐