获取数据库中最大的数值并加1返回,怎么做?
我数据库中有一个字段是外键,但该字段不是自动增长,而是通过时间获得一个字符串,对数据库中的该字段进行查询,返回最大值,该字段类型是char(100),返回后加一再写入数据库,但是C#类型有严格限制,无法进行转换,请教如何处理? 
 例如: 
 string   exec=(string)sqlcmd.ExecuteScalar();//sqlcmd是sqlCommand对象实例,其他省略 
 由于返回的是string类型,想将返回的值加一好难,就是Int32   returnValue=(Int32)exec+1; 
 但失败,该字段存储的都是数字却仍然失败. 
------解决方案--------------------count出来数据条数,然后在 int 转换 。在  + 1
------解决方案--------------------Convert.ToInt32()方法转换试试,再不行直接在SQL语句里转。
------解决方案--------------------string str =  "select uid from tables1 order by uid desc "; 
 DataSet ds = new DataSet(); 
 ds = myac.ExecuteSqlDs(str,  "id "); 
 if (ds.Tables[ "id "].Rows.Count >  0)                
 id = Convert.ToInt32(ds.Tables[ "id "].Rows[0][0]) + 1; 
 然后再写进去就好了
------解决方案--------------------是不是数字太大了 或者用convert.toint64 
 Int64 returnValue=convert.toint64(exec)+1;
------解决方案--------------------string exec=(string)sqlcmd.ExecuteScalar();   
 int tmp = Convert.ToInt32(exec); 
 tmp = tmp+1;   
 //tmp写回数据库
------解决方案--------------------在数据库中转换 用convert或cast
------解决方案--------------------string exec=(string)sqlcmd.ExecuteScalar();//sqlcmd是sqlCommand对象实例,其他省略 
 由于返回的是string类型,想将返回的值加一好难,就是Int32 returnValue=(Int32)exec+1; 
 --------------------------- 
 应该是你的sqlcmd返回的值不对,你的sql语句是什么
------解决方案--------------------在数据库里转,直接返回给C#
------解决方案--------------------在数据库中转换? 
 可以用convert,如:convert(decimal(18,0), '20070819 ')等 
 也可以取出你需要的部分,如天,小时等单独加一 
 ------ 
 我觉得你可能没有描述清楚
------解决方案--------------------select isnull(max(keyid),0) from news
------解决方案--------------------string exec=(string)sqlcmd.ExecuteScalar(); 
 返回空值就出错误,说无法将类型为“System.DBNull”的对象强制转换为类型“System.String”。 
 怎样处理? 
 -------------------------------   
 string exec=Convert.ToString(sqlcmd.ExecuteScalar());
------解决方案--------------------我觉得,在数据库能转,在.net中也能转.在c#用Convert类转,在数据库convert()转.
------解决方案--------------------判断一下为空的情况。
------解决方案--------------------路过,顶一下
------解决方案--------------------在数据库写个函数不就OK了吗?为何要到前台来做?要是一笔记录都没有,就会出现DBnull的错误!   
 ====返回表 ddzd中的下一个TO编号   
 ALTER    function get_TONextno(@date datetime) 
 returns varchar(20) 
 as 
 begin 
 DECLARE @YEAR VARCHAR(2) 
 DECLARE @NEWNO VARCHAR(20) 
 SET @YEAR=SUBSTRING(CONVERT(VARCHAR(4),YEAR(@date)),3,2) 
 	SELECT @NEWNO=MAX(ddbh) FROM dddd  
 	WHERE SUBSTRING(ddbh,3,2)=@YEAR and ddbh like  'TO% ' and len(ddbh)=8 
 	IF @NEWNO IS NULL 
 		SET @NEWNO= 'TO '+@YEAR+ '0001 ' 
 	ELSE 
 		SET @NEWNO= 'TO '+@YEAR+RIGHT( '000000 '+CONVERT(VARCHAR, CONVERT(BIGINT,SUBSTRING(@NEWNO,5,4))+1),4) 
 	return @newno 
 end 
------解决方案--------------------