데이터베이스에 문자열로 저장된 필드가 있습니다. 실제로는 쉼표로 구분 된 문자열로 롱리스트로 변환됩니다. 변환 할 코드의 라인은 다음과 같이 다소 찾습니다은 데이터베이스에 데이터를 저장할 때 데이터가 손상 될 수 있습니까?
이TheListOfLongs = (from string s in StringFromDB.Split(',')
select Convert.ToInt64(s)).ToList<long>();
데이터베이스 저장 문자열을 생성하는 코드는 다음과 같습니다위한 경우
return String.Join(",", TheListOfLongs.Select(x=> x.ToString()).ToArray());
이 잘 작동하지만 같은 당신이 볼 수 있습니다 어떤 이유로 문자열에 문제가있는 경우 코드 첫 줄의 코드가 Convert.ToInt64(s)
에 나옵니다.
try
문 주위에이 모든 내용을 래핑 할 수 있지만 이제 내 질문은 : 데이터베이스에 문자열을 저장하고 검색하면 문자열이 손상 될 수 있습니다 (이 경우에는 try
문이 필요함) 또는이 중 하나입니다. 1 조 가지 이상한 사건?
"Convert.ToInt64 (s)'"에서 깨지는 레코드가 무엇입니까? – Yuck
@Yuck : 잘 지내지는 않습니다 (당분간). 쉼표로 구분 된 문자열입니다. 28983,3553,57523,5334,35543,4636343,16941,4223,53534 .... – frenchie
아니요, 데이터베이스가 임의로 "데이터를 손상"하지 않습니다. 예, 불법 데이터는 "삽입"또는 "업데이트"전에 엄격하게 검증하지 않는 한 데이터베이스에 들어갈 수 있습니다. [GIGO] (http://en.wikipedia.org/wiki/Garbage_in,_garbage_out). 그리고 네, 당신이 절대 * 아무것도 * 절대 * 잘못 * 갈 것입니다 (유명한 마지막 단어!), 당신은 분명히 적절한 장소에서 올바른 오류 처리를 코딩해야합니다. IMHO ... – paulsm4