그때, 데이터베이스의 최대 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 + "')";
을하지만 난 삽입 할 때 이 데이터베이스에, 그것은 오류
에게 EntityFramework.SqlServer.dll에서 발생한 'System.Data.SqlClient.SqlException'형식의 예외를 제공하지만 사용자 코드
추가 정보 처리되지 않은 : 문자열 또는 이진 dat a는 잘립니다.
내가 SQL 서버에 쿼리를 실행 시도 'PVID'의 값을 확인했지만, 그것은 내가 정수 PVID에 'PV'를 포함 한 후 10 그래서, 그것은 그래서 괜찮을 것 (12)를해야한다입니다 ,하지만 왜 그 오류가 발생 했습니까? 누구든지 나를 도울 수 있습니까?
[Key]
[MaxLength(20), MinLength(12)]
public string pvid { get; set; }
pvid를 하드 코드 ID로 바꿀 때 올바르게 작동합니다. 왜 이런 일이 일어나는 걸까요?
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