我将以下代码作为数据访问层的一部分。
#region Update ConnectionType
public void UpdateConnectionType(string lastUpdatedBy, string connectionTypeDesc, int connectionTypeID, bool isDisabled)
{
var sqlStatement = new StringBuilder();
sqlStatement.Append(" UPDATE dbo.ConnectionType");
sqlStatement.Append(" SET");
sqlStatement.Append(" LastUpdatedBy = @LastUpdatedBy, ");
sqlStatement.Append(" ConnectionTypeDesc = @ConnectionTypeDesc,");
sqlStatement.Append(" IsDisabled = @IsDisabled, ");
sqlStatement.Append(" LastUpdatedDate = GetDate() ");
sqlStatement.Append(" WHERE ");
sqlStatement.Append(" ConnectionTypeID = @ConnectionTypeID");
SqlCommand sqlCommand = new SqlCommand(sqlStatement.ToString());
sqlCommand.Parameters.Add("@ConnectionTypeID", SqlDbType.Int);
sqlCommand.Parameters["@ConnectionTypeID"].Value = connectionTypeID;
sqlCommand.Parameters.Add("@IsDisabled", SqlDbType.Bit);
sqlCommand.Parameters["@IsDisabled"].Value = isDisabled;
sqlCommand.Parameters.Add("@LastUpdatedBy", SqlDbType.VarChar);
sqlCommand.Parameters["@LastUpdatedBy"].Value = lastUpdatedBy;
sqlCommand.Parameters.Add("@ConnectionTypeDesc", SqlDbType.VarChar);
sqlCommand.Parameters["@ConnectionTypeDesc"].Value = connectionTypeDesc;
DBAccess.SQLServer.ExecuteNonQuery(DBAccess.SQLServer.GetConnectionString("AccountTracker"), sqlCommand);
}
#endregion
上面的代码指向一个数据库,其中的数据类型ConnectionTypeDesc
是varchar(100).
的,现在由于我只表明它是varchar类型。
我的问题是:我应该如何解释数据类型规范的差异?
我应该使用下面的示例代码创建一个对象类吗?
// SQL parameter collection
var sqlParams = new List<SqlParameter>();
sqlParams.Add(new SqlParameter() { ParameterName = "@Client_Code", SqlDbType = SqlDbType.VarChar, Size = 9, Value = clientCode });
// Create sql command
var sqlCmd = new SqlCommand(sqlStatement.ToString());
// Add sql parameters to sql command
sqlCmd.Parameters.AddRange(sqlParams.ToArray());
// Execute sql
DBAccess.SQLServer.ExecuteNonQuery(DBAccess.SQLServer.GetConnectionString("JutfDB"), sqlCmd);
如果您知道varchar字段的大小,则在构建参数时始终指定该大小
sqlCommand.Parameters.Add("@ConnectionTypeDesc", SqlDbType.VarChar, 100);
sqlCommand.Parameters["@ConnectionTypeDesc"].Value = connectionTypeDesc;
这对查询的性能有重要影响,尤其是对于connectionTypeDesc
不同的字符串长度,使用不同的值重复查询时。
如果再次调用相同的查询,但只有正确指定了varchar列的大小,Sql Server中的查询优化器才能缓存您的查询计划并重用它。
您可以在本文中阅读有关此问题的更多信息。
数据访问代码如何影响数据库性能
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句