有個存儲過程內(nèi)容如下:
public static int InsertProfile(Profile model)


{
try

{
DbCommand dbc = m_Db.GetStoredProcCommand("Profile_Insert");
m_Db.AddInParameter(dbc, "@pSourceID", DbType.String, model.SourceID);
m_Db.AddInParameter(dbc, "@pName", DbType.String, model.Name);
m_Db.AddInParameter(dbc, "@pAddress", DbType.String, model.Address);
m_Db.AddInParameter(dbc, "@pCity", DbType.String, model.City);
m_Db.AddInParameter(dbc, "@pTel", DbType.String, model.Tel);
m_Db.AddInParameter(dbc, "@pCode", DbType.String, model.code);
object obj = m_Db.ExecuteScalar(dbc);
if (obj != null)

{
return int.Parse(obj.ToString());
}
else

{
return 0;
}
}
catch (System.Exception e)

{
return 0;
}
}
上面的AddInParameter的參數(shù)順序和Profile_insert在數(shù)據(jù)庫中定義的參數(shù)順序不同。之前都能正常工作,上周六突然發(fā)現(xiàn)不行了,實(shí)際寫入表的時候,順序亂掉了,直到今天才找到解決方案:
把AddIn的參數(shù)順序和聲明的參數(shù)保持一致。這個問題太奇怪了。大概環(huán)境是,表的存儲引擎為MyISAM,上百萬記錄,mysql部署在ubuntu,mysql版本5.1.53。
最開始的思路是:
1. 代碼問題
2. DbCommand dbc = m_Db.GetStoredProcCommand("Profile_Insert");的多線程調(diào)用
3. mysql的配置問題
思維定勢導(dǎo)致沒懷疑過參數(shù)順序,上面存儲過程是為說明問題而臨時改動的,實(shí)際系統(tǒng)中的存儲過程和業(yè)務(wù)有很強(qiáng)的關(guān)聯(lián),不方便介紹.