2017-06-17 188 views
0

我正在使用sql server 2012和我有一个DOB列在我的表和类型是nvarchar(50),我使用日期数据类型之前,我改变为nvarchar。我通过使用三个组合框(月份,日期,年份)接受了出生日期,我附上了代码。请仔细观察并帮助我。谢谢转换日期和时间从字符串转换失败

string dob = cmbDate.Text + "/" +cmbMonth.Text + "/"+cmbYear.Text; 

query= "Insert into Admissions(
       Admission_date, 
       Student_name, 
       Father_name, 
       Mother_name, 
       DOB, 
       Gender, 
       Address, 
       State, 
       City, 
       Pincode, 
       Admission_for, 
       Previous_school,Fees 
       ) 
       values 
       ('"+txtAdmDate.Text+"','"+ 
       txtStudentName.Text +"','"+ 
       txtFatherName.Text +"','"+ 
       txtMotherName.Text +"','"+ 
       dob+"','"+ 
       gender+"','"+ 
       txtAddress.Text +"','"+ 
       txtState.Text +"','"+ 
       txtCity+"','"+ 
       txtPincode.Text +"','"+ 
       cmbClass.Text+"','"+ 
       txtPreviousSchool.Text +"','"+ 
       txtFees.Text +"')"; 

     cmd = new SqlCommand(query,con); 
     con.Open(); 
     cmd.ExecuteNonQuery(); 
     con.Close(); 
+3

了解如何使用参数化查询,提供参数用正确的类型。瞧!问题已经解决了。 –

+0

在query = ...之前加上这个... >>'dob ='''+ dob +'''' –

+0

我想用ad hoc查询。请告诉我为什么我得到这个错误。 – SATYA

回答

0

使用CreateParameter()方法将您的参数放入您的查询中。
参数是强类型的,因此您将避免错误转换的问题。

参考:
CreateParameter
SqlParameter
IDataParameterCollection

var myParam = cmd.CreateParameter(); 
// Add values, type, direction, etc... 
cmd.Parameters.Add(myParam); 
相关问题