2012-11-17 3 views
0

WPF 응용 프로그램이 있습니다. date 내 테이블과 두 개의 열이 employeename (varchar(10))와 date (datetime)char 데이터 형식을 datetime 데이터 형식으로 변환하면 범위를 벗어나는 datetime 값이 발생합니다.

내 코드는 다음과 같습니다 "dd/mm/yyyy 같은 사실

Sqlconncetion con = new Sqlconnection("my database connection ");  
SqlCommand cmd = new SqlCommand("insert into date values('"+textBox1.Text+"','"+datePicker1.Text+"')", con);  
con.Open();    
int n = cmd.ExecuteNonQuery();     
if (n > 0) 
{ 
    MessageBox.Show("insert"); 
} 

내 WPF datepicker 형식의 입력이 "및 SQL Server 테이블에 날짜 형식 mm/dd/yyyy을 받아들이을 SQL Server datetime 데이터 형식을 어떻게 변경합니까? C#의 코드로 해결하십시오.

내 작업은 모든 이름과 생년월일을 표시하는 것입니다. 내 조건은 기본적이지만 날짜 선택 및 버튼 입력시 예외가 발생합니다. 내 코드는

SqlConnection con = new SqlConnection("my connection "); 

SqlDataAdapter da = new SqlDataAdapter("select name,date from date where date between'"+ Convert.ToDateTime(datePicker2.SelectedDate)+"' and '"+ Convert.ToDateTime(datePicker3.SelectedDate)+"'",con); 

DataSet ds = new DataSet(); 

da.Fill(ds, "entry"); 

da.Dispose(); 

dataGrid1.DataContext = ds.Tables["entry"].DefaultView; 

plz 코드 오류를 해결하고 올바른 코드를 작성하는 데 도움이됩니다. 이것은 WPF 응용 프로그램입니다.

+2

문자열로 날짜를 취급하지 마십시오 - (C#으로'예'datePicker1.SelectedDate's 값을 DateTime'을 서버에 datetime''로 유지하고) ADO.Net이 필요한 번역을 처리하게하십시오. –

답변

3

SqlParameters을 사용하여 데이터베이스에 값을 전달하십시오. 이것은 유형 안전성, 성능 및 SQL 주입을 방지합니다. 또한 데이터베이스 연결이 종료됩니다 보장하는 using 문을 사용

var cmdText = "INSERT INTO date VALUES(@name, @date)"; 

using(var con = new SqlConnection(conString)) 
using(var cmd = new SqlCommand(cmdText, con)) { 
    cmd.Parameters.Add("@name", textBox1.Text); 
    cmd.Parameters.Add("@date", datePicker1.SelectedDate); 
    con.Open(); 
    int n = cmd.ExecuteNonQuery(); 
    //... 
} 
+1

WPF DatePicker라면, 사용해야하는 ['SelectedDate'] (http://msdn.microsoft.com/en-us/library/system.windows.controls.datepicker.selecteddate.aspx) 속성이라고 생각합니다 (내 의견에서 같은 실수를 저지른) - 그것은 'Value' 속성을 가지고 있지 않습니다. –

+0

@Damien_The_Unbeliever 감사합니다! 어떤 미지의 이유에 대해 나는 그것의 WinForms를 생각했다 : –

+0

고맙다는 두 번째 임무는 – user1464596

관련 문제