1、select Max(AutoID) from RushMatch 如果数据库表中没有一条记录,那么就会返回null
2、(int)与System.Convert.ToInt32( )的区别
先发一个函数,
public static object GetMaxIDExecuteQuerySql(string SqlText, ref string ErrString)
{
object RetValue = null;
try
{
SqlConnection Conn = NewConnection();
if (Conn == null)
throw new Exception("无法建立数据库连接");
try
{
SqlCommand Cmd = new SqlCommand(SqlText + ";select SCOPE_IDENTITY() ", Conn);
RetValue = Cmd.ExecuteScalar();
}
finally
{
Conn.Close();
}
}
catch (Exception e)
{
ErrString = e.Message;
}
return RetValue;
}
这个函数很有用的,因为在程序中很多的地方总是会用到这个,特别是用事务的地方,其他的表总是依赖于这个表的,因为但是这个语句不能写在事务里面,因为事务中的其他语句是等第一个语句的返回的结果的identity值来插入到其他的相关的多个表中,因为我如果我了select max(id)来取得这个表的id,那么其他的用户同时也插入了新的数据,那么我的max(id)便不是我自己的新插入的最大的id了,所以我们就必须用到上面的函数了,我在得到返回值得时候我用的是(int)的方法来强制转换我的ExecuteScalar();返回的object的结果,可是报了转换无效的错误,用了system.conver.ToInt32()就成功了,为什么呢?
3减少程序出错的另外一个方法就是尽量多封装稳定的函数,这个时候就要求写出的函数的要稳定,符合软件工程的一些要求,例如返回什么值,这个函数应该是什么类型不应该是什么类型的,一个函数不应该去做很多事情,一个函数不应该在内部出现很多的直接获取页面对象的语句而应该是直接通过传递对象以参数的形式,这样就很好复用,还有例如多个页面之间来回调用的时候,本页面的函数不应该跳跃几个页面去操作,而应该是本页面的函数去操作其他页面的函数,从而实现调用,这样如果再有其他的同类操作,那么就可以直接去掉用本页面的函数即可。同时也保证了页面少出错误。