如何使用 c# 将空值返回到数据库

迈克尔

我创建了一个函数,如果字符串的字段长度小于 2 个字符,它应该将一个空值发送回我的数据库,但它在数据库上将其更改为 00-00-00。有人可以指出我正确的方向。

public string dateChanger(string txtBox)     
     if (txtBox.Length < 2)
            {
                return DBNull.Value.ToString();

            }
            else
            {
                var date = txtBox;

                var name = date.Substring(6, 4) + "-" + date.Substring(3, 2) + "-" + date.Substring(0, 2);
                return name;
            }
}

下面是我用来调用函数“dateChanger”并插入数据库的代码

     [HttpPost]
        public JsonResult AjaxMethodSaveStudent(string cboStudentName = "", string cboStudentSurname = "", string txtStudentMiddleName = "", string txtStudentNumber = "", string txtStudentDOB = "", string txtStudentPreferredName = "", string txtStudentPropertyName = "", string txtStudentRegImmiCardNumber = "")
        {
            long studentId = 0;
            string constr = ConfigurationManager.ConnectionStrings["ConString"].ConnectionString;
            using (MySqlConnection con = new MySqlConnection(constr))
            {
                string queryStudent = "INSERT INTO `STUDENT REGISTER` " +
                    "(`first name`, " +
                    "`surname`, " +
                    "`Middle Names`," +
                    "`DATE OF BIRTH`," +
                    "`ImmiCardNumber`) " +
                    "VALUES" +
                    "('" + cboStudentName + "'," +
"'" + cboStudentSurname + "'," +
"'" + txtStudentMiddleName + "'," +
"'" + dateChanger(txtStudentDOB) + "'," +
"'" + txtStudentRegImmiCardNumber + "') ";
                using (MySqlCommand cmd = new MySqlCommand(queryStudent))
                {
                    cmd.Connection = con;
                    con.Open();
                    cmd.ExecuteNonQuery();

                    studentId = cmd.LastInsertedId;

                    con.Close();
                }
            }

            return Json(new { success = true, studentId = studentId }, JsonRequestBehavior.AllowGet);
        }
乔尔·科霍恩

该问题的天真解决方案是像这样更改函数:

public string dateChanger(string txtBox)     
{    
    if (txtBox.Length < 2) return "NULL";

    return txtBox.Substring(6, 4) + "-" + txtBox.Substring(3, 2) + "-" + txtBox.Substring(0, 2);
}

该函数的一个稍微改进的版本如下所示:

public string dateChanger(string txtBox)     
{    
    if (txtBox.Length < 2) return "NULL";

    return "'" + DateTime.Parse(txtBox).ToString("yyyy-MM-dd") + "'";
}

请注意,这两个都需要将 SQL 单引号的责任转移到函数中。否则,您可能无法从该函数返回任何将NULL值放入数据库的内容,因为数据库会将其视为字符串文字。而不是+ "'" + dateChanger(...) + "'" +你只是想要+ dateChanger(...) +您还需要考虑如何处理对 的需求,IS而不是=NULL.

但是这些都不要做!

这两种可能性都迎合了将参数数据作为字符串提供的不良做法。这会对性能、可维护性和安全性产生负面影响。只是不要这样做。

最好的选择是dateChanger()完全从项目中删除该功能,以支持以下内容:

[HttpPost]
public JsonResult AjaxMethodSaveStudent(string cboStudentName = "", string cboStudentSurname = "", string txtStudentMiddleName = "", string txtStudentNumber = "", string txtStudentDOB = "", string txtStudentPreferredName = "", string txtStudentPropertyName = "", string txtStudentRegImmiCardNumber = "")
{
    long studentId = 0;
    string constr = ConfigurationManager.ConnectionStrings["ConString"].ConnectionString;
    string queryStudent = 
       "INSERT INTO `STUDENT REGISTER` " +
             "(`first name`, `surname`, `Middle Names`,`DATE OF BIRTH`, `ImmiCardNumber`) " +
       "VALUES (@StudentName, @Surname, @MiddleName, @DOB, @ImmiCardNumber);";

    using (MySqlConnection con = new MySqlConnection(constr))
    using (MySqlCommand cmd = new MySqlCommand(queryStudent, con))
    {
        //Use actual types and lengths from the database here.
        // Do NOT use AddWithValue() to skip setting parameter types.
        cmd.Parameters.Add("@StudentName", MySqlDbType.VarChar, 30).Value = cboStudentName;
        cmd.Parameters.Add("@Surname", MySqlDbType.VarChar, 30).Value = cboStudentSurname;
        cmd.Parameters.Add("@MiddleName", MySqlDbType.VarChar, 30).Value = txtStudentMiddleName;
        cmd.Parameters.Add("@DOB", MySqlDbType.DateTime).Value =  (txtStudentDOB.Length > 2) ? DateTime.Parse(txtStudentDOB.Substring(6, 4) + "-" + txtStudentDOB.Substring(3, 2) + "-" + txtStudentDOB.Substring(0, 2)) : (object)DBNull.Value;

        cmd.Parameters.Add("@ImmiCardNumber", MySqlDbType.VarChar, 30).Value = txtStudentRegImmiCardNumber;

        con.Open();
        cmd.ExecuteNonQuery();
        studentId = cmd.LastInsertedId;
    }

    return Json(new { success = true, studentId = studentId }, JsonRequestBehavior.AllowGet);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用C#将图片插入数据库?

来自分类Dev

C:如何将多个值从函数返回到main

来自分类Dev

如何在不使用参数的情况下在C#中向数据库插入空值?

来自分类Dev

如何检查 SQL 数据库中的空列值,C#

来自分类Dev

PHP数据库查询:如何将while循环的结果返回到Javascript变量?

来自分类Dev

使用Slick 3.1.x将数据库连接返回到HikariCP池

来自分类Dev

C#/ JSON如何处理从数据库查询返回的NULL值?

来自分类Dev

C#如何将Mysql数据库中的值显示到标签上?

来自分类Dev

C#使用主键将值保存在数据库中

来自分类Dev

使用Windows窗体C#将值添加到Mysql数据库

来自分类Dev

避免使用实体框架将空值或空值保存在数据库中

来自分类常见问题

如何断开数据库连接并返回到PostgreSQL中的默认数据库?

来自分类Dev

如何在C#中从数据库返回数组

来自分类Dev

使用C#将数据插入SQLite数据库

来自分类Dev

我应该如何通过Java将值中的unsigned int从Java传递并返回到C / C ++

来自分类Dev

如何从C的PyObject类型的函数将值从C返回到python?

来自分类Dev

如何使用C#将数据写入mysql数据库并忽略列

来自分类Dev

如何使用C#将Excel文件中的数据插入Microsoft LocalDB数据库

来自分类Dev

如何使用Objective-C将JSON数据发布到PHP数据库?

来自分类Dev

如何使用c#将数据从xml添加到数据库中

来自分类Dev

如何使用razor和C#将两个ListBoxes中的选定值返回到MVC控制器

来自分类Dev

如何从数据库返回空值

来自分类Dev

如何修剪从数据库返回的值?

来自分类Dev

如何从数据库返回空值

来自分类Dev

使用CTypes和Foreign将字符串从C库返回到OCaml

来自分类Dev

使用CTypes和Foreign将字符串从C库返回到OCaml

来自分类Dev

如何在数据库上下文中运行没有C#返回值的存储过程?

来自分类Dev

如何使用ASP.NET C#使用3层体系结构从数据库返回数据

来自分类Dev

如何使用include函数通过php变量将数据库查询的结果返回到另一个页面

Related 相关文章

  1. 1

    如何使用C#将图片插入数据库?

  2. 2

    C:如何将多个值从函数返回到main

  3. 3

    如何在不使用参数的情况下在C#中向数据库插入空值?

  4. 4

    如何检查 SQL 数据库中的空列值,C#

  5. 5

    PHP数据库查询:如何将while循环的结果返回到Javascript变量?

  6. 6

    使用Slick 3.1.x将数据库连接返回到HikariCP池

  7. 7

    C#/ JSON如何处理从数据库查询返回的NULL值?

  8. 8

    C#如何将Mysql数据库中的值显示到标签上?

  9. 9

    C#使用主键将值保存在数据库中

  10. 10

    使用Windows窗体C#将值添加到Mysql数据库

  11. 11

    避免使用实体框架将空值或空值保存在数据库中

  12. 12

    如何断开数据库连接并返回到PostgreSQL中的默认数据库?

  13. 13

    如何在C#中从数据库返回数组

  14. 14

    使用C#将数据插入SQLite数据库

  15. 15

    我应该如何通过Java将值中的unsigned int从Java传递并返回到C / C ++

  16. 16

    如何从C的PyObject类型的函数将值从C返回到python?

  17. 17

    如何使用C#将数据写入mysql数据库并忽略列

  18. 18

    如何使用C#将Excel文件中的数据插入Microsoft LocalDB数据库

  19. 19

    如何使用Objective-C将JSON数据发布到PHP数据库?

  20. 20

    如何使用c#将数据从xml添加到数据库中

  21. 21

    如何使用razor和C#将两个ListBoxes中的选定值返回到MVC控制器

  22. 22

    如何从数据库返回空值

  23. 23

    如何修剪从数据库返回的值?

  24. 24

    如何从数据库返回空值

  25. 25

    使用CTypes和Foreign将字符串从C库返回到OCaml

  26. 26

    使用CTypes和Foreign将字符串从C库返回到OCaml

  27. 27

    如何在数据库上下文中运行没有C#返回值的存储过程?

  28. 28

    如何使用ASP.NET C#使用3层体系结构从数据库返回数据

  29. 29

    如何使用include函数通过php变量将数据库查询的结果返回到另一个页面

热门标签

归档