我試圖尋找在數據庫中的最大ID,然後通過各1個新條目增加,如下所示:SQL字符串或二進制數據將被截斷
var query2 = dbb.Database.SqlQuery<patient_visit>("SELECT MAX(CAST(SUBSTRING(pvid, 3, 10) AS int)) FROM patient_visit");
if (query2 != null)
{
objDetails.pvid = query2.ToString();
objDetails.pvid += 1;
objDetails.pvid = "PV" + objDetails.pvid;
}
string sql = "INSERT INTO patient_visit (pvid,paid) " +
"VALUES('" + objDetails.pvid + "', '" + paid + "')";
但是,當我嘗試插入它在數據庫中,它給出了錯誤
類型「System.Data.SqlClient.SqlException」發生在EntityFramework.SqlServer.dll的一個例外,但在用戶代碼
其他信息沒有處理:字符串或二進制數據a會被截斷。
我試着在SQL Server中運行查詢,並檢查了'pvid'的值,它是10,所以在包含'PV'到整數pvid後,它應該是12.所以它應該沒問題,但爲什麼我得到這個錯誤?請任何人都可以幫我嗎?
[Key]
[MaxLength(20), MinLength(12)]
public string pvid { get; set; }
當我用硬編碼ID替換pvid時,它工作得很好。這是爲什麼發生? P/S:我知道不建議簡單地將輸入數據與查詢連接起來,但我也嘗試使用參數化查詢進行查詢,但它給出了相同的錯誤。
string sql = "INSERT INTO patient_visit (pvid,paid) " +
"VALUES(@pvid, @paid)";
List<SqlParameter> parameterList = new List<SqlParameter>();
parameterList.Add(new SqlParameter("@pvid", objDetails.pvid));
parameterList.Add(new SqlParameter("@paid", paid));
SqlParameter[] parameters = parameterList.ToArray();
dbb.Database.ExecuteSqlCommand(sql, parameters);
你能告訴我們爲什麼你使用一個字符串pvid,並增加1,你可以使用自動增量字段? – maSTAShuFu
@maSTArHiAn我正在爲我的數據庫使用SQL Server 2012。我不是很熟悉它,可以用SQL Server 2012完成嗎?怎麼樣? – Nurul