无法将数据插入数据库,不显示错误消息

时间:2016-12-30 12:21:02

标签: asp.net

我无法将数据插入数据库,也没有收到任何错误消息。我通过将patientRegister声明为外键来链接表patientAdmissionpatientNRIC。以下是代码。

patientNOK.cs

 public class patientNOK
{
    public string nokWardClass { get; set; }
    public DateTime nokAdDT { get; set; }
    public string nokFName { get; set; }
    public string nokLName { get; set; }
    public string nokNRIC { get; set; }
    public DateTime nokDOB { get; set; }
    public string nokGender { get; set; }
    public string nokNationality { get; set; }
    public string nokRelationship { get; set; }
    public int nokContactH { get; set; }
    public int nokContactHP { get; set; }
    public string nokEmail { get; set; }
    public string nokAddr1 { get; set; }
    public string nokAddr2 { get; set; }
    public string nokState { get; set; }
    public string nokZIP { get; set; }
    public string nokCountry { get; set; }
    public DateTime dischargeDT { get; set; }
    public string patientNRICForiegn { get; set; }
}

 public class patientNOKDAO
{
    string DBConnect = ConfigurationManager.ConnectionStrings["ConnStr"].ConnectionString;

    public int InsertNOK(string wardClass , DateTime admissionDT, string nokFName, string nokLName, string nokNRIC, DateTime nokDOB, string nokGender, string nokNationality, string nokRelationship, int nokContactH, int nokContactHP, string nokEmail, string nokAddr1, string nokAddr2, string nokState, int nokZIP, string nokCountry, DateTime dischargeDT, string patientNRIC)
    {
        StringBuilder sqlStr = new StringBuilder();
        int result = 0;
        SqlCommand sqlCmd = new SqlCommand();

        sqlStr.AppendLine("Insert INTO patientAdmission( wardClass, admissionDT, patientNokFname, patientNokLname, patientNokNRIC, patientNOKDOB");

        sqlStr.AppendLine("patientNokGender, patientNokNationality, patientNokRelationship, patientNokContactH, patientNokContactHP, patientNokEmail");

        sqlStr.AppendLine("patientNokAddr1, patientNokAddr2, patientNokZIP, patientNokCountry, dischargeDateTime,patientNRIC)");

        sqlStr.AppendLine("VALUES (@parawardClass,@paraadmissonDT,@parapatientNokFname,@parapatientNokLname,@parapatientNokNRIC, @parapatientNOKDOB,@parapatientNokGender,@parapatientNokNationality");
        sqlStr.AppendLine("@parapatientNokRelationship,@parapatientNokContactH,@parapatientNokContactHP,@parapatientNokEmail,@parapatientNokAddr1,@parapatientNokAddr2,@parapatientNokState,@parapatientNokZIP");
        sqlStr.AppendLine("@parapatientNokCountry,@paradischargeDateTime,@parapatientNRIC)");

        try
        {
            SqlConnection myConn = new SqlConnection(DBConnect);
            sqlCmd = new SqlCommand(sqlStr.ToString(), myConn);

            sqlCmd.Parameters.AddWithValue("@parawardClass", wardClass);
            sqlCmd.Parameters.AddWithValue("@paraadmissionDT", admissionDT);
            sqlCmd.Parameters.AddWithValue("@parapatientNokFname", nokFName);
            sqlCmd.Parameters.AddWithValue("@parapatientNokLname", nokLName);
            sqlCmd.Parameters.AddWithValue("@parapatientNokNRIC", nokNRIC);
            sqlCmd.Parameters.AddWithValue("@parapatientNOKDOB", nokDOB);
            sqlCmd.Parameters.AddWithValue("@parapatientNokGender", nokGender);
            sqlCmd.Parameters.AddWithValue("@parapatientNokNationality", nokNationality);
            sqlCmd.Parameters.AddWithValue("@parapatientNokRelationship", nokRelationship);
            sqlCmd.Parameters.AddWithValue("@parapatientNokContactH", nokContactH);
            sqlCmd.Parameters.AddWithValue("@parapatientNokContactHP", nokContactHP);
            sqlCmd.Parameters.AddWithValue("@parapatientNokEmail", nokEmail);
            sqlCmd.Parameters.AddWithValue("@parapatientNokAddr1", nokAddr1);
            sqlCmd.Parameters.AddWithValue("@parapatientNokAddr2", nokAddr2);
            sqlCmd.Parameters.AddWithValue("@parapatientNokState", nokState);
            sqlCmd.Parameters.AddWithValue("@parapatientNokZIP", nokZIP);
            sqlCmd.Parameters.AddWithValue("@parapatientNokCountry", nokCountry);
            sqlCmd.Parameters.AddWithValue("@paradischargeDateTime", dischargeDT);
            sqlCmd.Parameters.AddWithValue("@parapatientNRIC", patientNRIC);

            myConn.Open();
            result = sqlCmd.ExecuteNonQuery();

            myConn.Close();
        }
        catch(Exception ex)
        {
            logManager log = new logManager();
            log.addLog("patientNOKDAO.InsertNOK", sqlStr.ToString(), ex);
        }
        return result;
    }
}

UI

 string wardPreference = ddl1.SelectedValue;

        string admissionDischargeDT = adDT.Text;
        string admissionDT = admissionDischargeDT.Substring(0,19);
        string dischargeDT = admissionDischargeDT.Substring(22,19);

        DateTime admissionDTinput = DateTime.ParseExact(admissionDT,"MM/dd/yyyy hh:mm tt",System.Globalization.CultureInfo.InvariantCulture);

        DateTime dischargeDTinput = DateTime.ParseExact(dischargeDT, "MM/dd/yyyy hh:mm tt", System.Globalization.CultureInfo.InvariantCulture);

        string FNameNOK = TextBoxNOKFname.Text;
        string LNameNOK = TextBoxNOKLname.Text;
        string nricNOK = TextBoxNOKNRIC.Text;
       //
        DateTime dobNOK = DateTime.ParseExact(nokDOB.Text.ToString(), "MM/dd/yyyy", System.Globalization.CultureInfo.InvariantCulture);
        string selectedNOKGender = null;
        if(Request.Form["radio-unstyled-inline-left"] !=null)
        {
            selectedNOKGender = Request.Form["radio-unstyled-inline-left"].ToString();
        }

        string nationalityNok = TextBoxNOKNationality.Text;
        string relationshipNOK = DropDownListRelationship.SelectedValue;

        int nokContactH = Convert.ToInt32(TextBoxNOKContactH.Text);
        int nokContactHP = Convert.ToInt32(TextBoxNOKContactHP.Text);
        string nokEmail = TextBoxNOKContactEmail.Text;
        string nokAddr1 = TextBoxNOKAddr1.Text;
        string nokAddr2 = TextBoxNOKAddr2.Text;
        string nokState = TextBoxNOKState.Text;
        int nokZIP = Convert.ToInt32(TextBoxNOKZIP.Text);
        string nokCountry = TextBoxNOKCountry.Text;
        string patientNRIC = TextBoxNRIC.Text;

        try
        {
            patientNOKDAO fmNOK = new patientNOKDAO();

            int insNOK = fmNOK.InsertNOK(wardPreference, admissionDTinput, FNameNOK, LNameNOK, nricNOK, dobNOK, selectedNOKGender, nationalityNok, relationshipNOK, nokContactH, nokContactHP, nokEmail, nokAddr1, nokAddr2, nokState, nokZIP, nokCountry, dischargeDTinput, patientNRIC);

            if (insNOK == 1)
            {
                TextBoxAddr1.Text = "Sucess";
            }
            else
            {
                TextBoxAddr1.Text = "FAILURE";
            }
        }
        catch (FormatException)
        {
            TextBoxAddr1.Text = "error";
        }
    }

我尝试查看它显示的日志文件,显然NOK类存在问题

  

异常类型:System.Data.SqlClient.SqlException异常:   ' patientNokGender'附近的语法不正确。资源:   patientNOKDAO.InsertNOK sql命令:插入INTO patientAdmission(   wardClass,admissionDT,patientNokFname,patientNokLname,   patientNokNRIC,病人NOKDOB patientNokGender,patientNokNationality,   patientNokRelationship,patientNokContactH,patientNokContactHP,   patientNokEmail patientNokAddr1,patientNokAddr2,patientNokZIP,   patientNokCountry,dischargeDateTime,patientNRIC)VALUES   (@ parawardClass,@ paraadmissonDT,@ parapatientNokFname,@ parapatientNokLname,@ parapatientNokNRIC,   @ parapatientNOKDOB,@ parapatientNokGender,@ parapatientNokNationality   @ parapatientNokRelationship,@ parapatientNokContactH,@ parapatientNokContactHP,@ parapatientNokEmail,@ parapatientNokAddr1,@ parapatientNokAddr2,@ parapatientNokState,@ parapatientNokZIP   @ parapatientNokCountry,@ paradischargeDateTime,@ parapatientNRIC)

3 个答案:

答案 0 :(得分:0)

请你测试最终生成的sql命令。 在这种问题中,我在microsoft sql server的新查询中运行sqlCmd。

答案 1 :(得分:0)

看起来你在字符串连接中的某些点上缺少逗号,第一个在这里:

  患者NOKDOB patientNokGender

另一个在这里:

  

patientNokEmail patientNokAddr1

原因如下:

sqlStr.AppendLine("Insert INTO patientAdmission( wardClass, admissionDT, patientNokFname, patientNokLname, patientNokNRIC, patientNOKDOB");

sqlStr.AppendLine("patientNokGender, patientNokNationality, patientNokRelationship, patientNokContactH, patientNokContactHP, patientNokEmail");

您还需要确保将逗号添加到值字符串连接中。

答案 2 :(得分:0)

更新以下行 -

sqlStr.AppendLine("Insert INTO patientAdmission( wardClass, admissionDT, patientNokFname, patientNokLname, patientNokNRIC, patientNOKDOB");
sqlStr.AppendLine("patientNokGender, patientNokNationality, patientNokRelationship, patientNokContactH, patientNokContactHP, patientNokEmail");
sqlStr.AppendLine("patientNokAddr1, patientNokAddr2, patientNokZIP, patientNokCountry, dischargeDateTime,patientNRIC)");
sqlStr.AppendLine("VALUES (@parawardClass,@paraadmissonDT,@parapatientNokFname,@parapatientNokLname,@parapatientNokNRIC, @parapatientNOKDOB,@parapatientNokGender,@parapatientNokNationality");
sqlStr.AppendLine("@parapatientNokRelationship,@parapatientNokContactH,@parapatientNokContactHP,@parapatientNokEmail,@parapatientNokAddr1,@parapatientNokAddr2,@parapatientNokState,@parapatientNokZIP");
sqlStr.AppendLine("@parapatientNokCountry,@paradischargeDateTime,@parapatientNRIC)");

sqlStr.AppendLine("Insert INTO patientAdmission( wardClass, admissionDT, patientNokFname, patientNokLname, patientNokNRIC, patientNOKDOB, ");
sqlStr.AppendLine("patientNokGender, patientNokNationality, patientNokRelationship, patientNokContactH, patientNokContactHP, patientNokEmail, ");
sqlStr.AppendLine("patientNokAddr1, patientNokAddr2, patientNokZIP, patientNokCountry, dischargeDateTime,patientNRIC)");
sqlStr.AppendLine("VALUES (@parawardClass,@paraadmissonDT,@parapatientNokFname,@parapatientNokLname,@parapatientNokNRIC, @parapatientNOKDOB,@parapatientNokGender,@parapatientNokNationality, ");
sqlStr.AppendLine("@parapatientNokRelationship,@parapatientNokContactH,@parapatientNokContactHP,@parapatientNokEmail,@parapatientNokAddr1,@parapatientNokAddr2,@parapatientNokState,@parapatientNokZIP, ");
sqlStr.AppendLine("@parapatientNokCountry,@paradischargeDateTime,@parapatientNRIC)");

刚刚附加","正确的SQL形成的第一,第二,第四和第五行。