양식의 데이터를 사용하여 SQL Server 2008에 데이터를 입력하려고합니다. 이 아래에있는 내 양식에 대한 코드입니다오류 : varchar 데이터 형식을 datetime 데이터 형식으로 변환하면 범위를 벗어나는 값이 발생합니다.
The conversion of a varchar data type to a datetime data type resulted in an out-of-range value.
The statement has been terminated
: 나는 내가 다음과 같은 오류를 받고 있어요 양식을 실행하려고하지만 때 DB에이 데이터를 양식에서 날짜를 선택하기에 DateTimePicker를 사용하여 입력하고 : 나는 방법 저장할 위치를 여기
private void btnAddBooking_Click(object sender, EventArgs e)
{
DateTime requested = dtpRequested.Value;
DateTime pickup = dtpPickup.Value;
DateTime estDropoff = dtpEstimatedDrop.Value;
SAF.AddNewBooking(requested, pickup, estDropoff, selectedStatus.StatusId, selectedRate.RateId);
dtpRequested.CustomFormat = " ";
dtpPickup.CustomFormat = " ";
dtpEstimatedDrop.CustomFormat = " ";
cbStatus.SelectedIndex = 0;
cbRateOfPayment.SelectedIndex = 0;
MessageBox.Show("Booking Created");
tabControl2.SelectTab(2);
}
는 외관에 코드입니다 :
public void AddNewBooking(DateTime requestedD, DateTime pickupD, DateTime estDropOff, int statusId, int rateId)
{
dao.AddNewBooking(requestedD, pickupD, estDropOff, statusId, rateId);
}//end CreateBooking
을이 내 DAO에서 INSERT
문 코드 :
sql = "INSERT INTO [Transaction] (TransactionId, RequestedDateOfPickup, ActualDateOfPickup, EstimatedDropOffDate, StatusId, RateId)";
sql += String.Format("VALUES('{0}', '{1}', '{2}', '{3}', {4}, {5})", transactionId, requestedD, pickupD, estDropOff, statusId, rateId);
cn = new SqlConnection(Properties.Settings.Default.UKRENTALSConnectionString);
cmd = new SqlCommand(sql, cn);
cn.Open();
cmd.ExecuteNonQuery();
[매개 변수] (http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlparameter.aspx)를 사용하면 SQL 주입을 방지 할 수 있으며 오류도 해결할 수 있습니다. – Habib
데이터 유형을 버리고 모든 것을 문자열로 처리하기 전까지는 모든 것이 잘 돌아갔다. @Habib이 언급했듯이 매개 변수를 사용해야합니다. 또한, 'Transaction'은 테이블에 대한 실제 이름이 아닙니다. –