在添加新数据的时候,查找数据库内最大的ID值(位置是第0列)。但是我想加个判断,就是当数据库内有数据的时候,当前最大ID值+1,如果数据库内没有数据的时候,ID值=1。这是我已经写好的语句,肯定有问题,但是我不知道怎么改,请教高手帮忙改一下。我知道方法很多,但是请高手按照我这个思路改,否则小弟初学,怕看不懂,谢谢!!!
maxID = 0;
string strMaxidSql = "select max(Book_ID) from BookMaster";
DataTable tempDataTable = link.SelectDataBase(strMaxidSql);
if (tempDataTable.Rows.Count == 0)
{
maxID = 1;
}
else
{
maxID = Convert.ToInt32(tempDataTable.Rows[0][0]) + 1;
}
AddBook();//添加数据的共通函数,这个没问题不用管
maxID = 0;
string strMaxidSql = "select max(Book_ID) from BookMaster";
DataTable tempDataTable = link.SelectDataBase(strMaxidSql);
if (tempDataTable.Rows.Count == 0)
{
maxID = 1;
}
else
{
maxID = Convert.ToInt32(tempDataTable.Rows[0][0]) + 1;
}
AddBook();//添加数据的共通函数,这个没问题不用管
LINK 应该是个静态的DATA操作类把~~看下 你那个方法 执行出来是不是你要的结果?··别的我没看出什么问题··我也是新手··
string strMaxidSql = "select isnull(max(Book_ID),-1) from BookMaster";
DataTable tempDataTable = link.SelectDataBase(strMaxidSql);
if (tempDataTable.Rows[0].[0] == -1)
{
maxID = 1;
}
else
{
maxID = Convert.ToInt32(tempDataTable.Rows[0][0]) + 1;
}
AddBook();//添加数据的共通函数,这个没问题不用管
using(SqlConnection conn = new SqlConnection(cnString)) {
conn.Open();
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = "SELECT MAX(id) FROM Person";
object o = cmd.ExecuteScalar();
if(o != null)
maxID = (int)o + 1;
}
Console.WriteLine(maxID);
maxID = Convert.ToInt32(tempDataTable.Rows[0][0]) + 1;这条语句会出现这个错误,オブジェクトを DBNull から他のタイプにキャストすることはできません(在词霸里翻译出来的是这个意思:可以转换为DBNull,以从其他类型的对象可以;在Yahoo里翻译出来的是这个意思:不能在其他的型从DBNull做演员表对象)。呃...有点无语哈,可是没办法,各位高手费心了!!!
版主大人呢,给兄弟指个方向吧!!!
book_id为空时,返回-1,
如果没有数据会返回null,判断一下就行了