c# 将数据库提取到 SQL Server 数据表中

春春丸

我对这段代码有问题......我对发生的事情一无所知......

当我在 Visual Studio 中运行此代码时,我收到一条错误消息:

System.InvalidCastException: '对象不能从 DBNull 转换为其他类型。'

这是代码:

conn.Open();

SqlCommand com = new SqlCommand("update lend set date_back=convert(datetime2, getdate(), 102) where client_name ='" + comboBox1.Text + "'", conn);

SqlDataAdapter da = new SqlDataAdapter("Declare @startdate smalldatetime declare @enddate smalldatetime set @startdate = (select date_lended from dbo.lend where client_name = '" + comboBox1.Text + "') set @enddate = (select date_back from dbo.lend where client_name = '" + comboBox1.Text + "') SELECT DATEDIFF(DAY, @startdate+2, @enddate)as timepassedd", conn);

DataTable dt = new DataTable();
da.Fill(dt);

foreach (DataRow DR in dt.Rows)
{
    int date;
    date = Convert.ToInt32(DR["timepassedd"]);

    if (date > 0)
    {
        com = new SqlCommand("DELETE lend WHERE client_name ='"+comboBox1.Text+"'" +
                             "UPDATE book_list set book_stock = book_stock  1 WHERE book_name ='" + comboBox1.Text + "'",conn);
        com.ExecuteNonQuery();

        MessageBox.Show("You Returned the book " + date + " Days Late!" +
                            "please pay the fee to the front desk");

        UserPanel u = new UserPanel();
        u.Show();

        this.Hide();
    }
    else if (date <= 0)
    {
        com = new SqlCommand("DELETE lend WHERE client_name ='" + comboBox1.Text + "'" +
                             "UPDATE book_list set book_stock = book_stock  1 WHERE book_name ='" + comboBox1.Text + "'", conn);
        com.ExecuteNonQuery();

        MessageBox.Show("You returned the book " + date + " Days Late!" +
                            "please pay the fee to the front desk");

        UserPanel u = new UserPanel();
        u.Show();

        this.Hide();
    }
}

conn.Close();

提前致谢

马哈茂德
        conn.Open();
        SqlCommand com = new SqlCommand("update lend set date_back=convert(datetime2, getdate(), 102) where client_name ='" + comboBox1.Text + "'", conn);
        SqlDataAdapter da = new SqlDataAdapter("Declare @startdate smalldatetime declare @enddate smalldatetime set @startdate = (select date_lended from dbo.lend where client_name = '" + comboBox1.Text + "') set @enddate = (select date_back from dbo.lend where client_name = '" + comboBox1.Text + "') SELECT DATEDIFF(DAY, @startdate+2, @enddate)as timepassedd", conn);
        DataSet ds = new DataSet();
        da.Fill(ds);
        if(ds.Tables.Count == 1)
        {
            if(ds.Tables[0].Rows.Count > 0)
            {
                foreach(DataRow dr in ds.Tables[0].Rows)
                {
                    if(dr.ItemArray.Length > 0)
                    {
                        if(dr["timepassedd"] != DBNull.Value)
                        {
                            int date;
                            date = Convert.ToInt32(Dr["timepassedd"]);
                            if (date > 0)
                            {
                                com = new SqlCommand("delete lend where client_name ='" + comboBox1.Text + "'" +
                                    "UPDATE book_list set book_stock = book_stock  1 WHERE book_name ='" + comboBox1.Text + "'", conn);
                                com.ExecuteNonQuery();
                                MessageBox.Show("You Returned the book " + date + " Days Late!" +
                                    "please pay the fee to the front desk");
                                UserPanel u = new UserPanel();
                                u.Show();
                                this.Hide();
                            }
                            else if (date <= 0)
                            {
                                com = new SqlCommand("delete lend where client_name ='" + comboBox1.Text + "'" +
                                    "UPDATE book_list set book_stock = book_stock  1 WHERE book_name ='" + comboBox1.Text + "'", conn);
                                com.ExecuteNonQuery();
                                MessageBox.Show("You Returned the book " + date + " Days Late!" +
                                    "please pay the fee to the front desk");
                                UserPanel u = new UserPanel();
                                u.Show();
                                this.Hide();
                            }
                        }
                    }
                }
            }
        }
        conn.Close();

您应该检查DBNull值,如果该列在数据库中可以为空,DBNull.Value则将返回a 所以你应该在处理它之前检查这个列是否有这样的值
此外,你不应该接受来自用户输入的值并将它们直接注入到 SQL 查询中!ADO.Net. Sql Parameters的属性Parameters可以找到称为它的东西SqlCommand您应该使用此属性将来自用户的值作为参数添加到查询中
例如,可以像这样添加客户端名称:

    com.Parameters.Add(new SqlParameter("client_name", comboBox1.Text));

现在您告诉 Sql 命令该值实际上是在SqlParameters集合中显示的,如下所示:

SqlCommand com = new SqlCommand("update lend set date_back=convert(datetime2, getdate(), 102) where client_name ='@client_name'", conn);

看看这个问题为什么我们总是喜欢在 SQL 语句中使用参数?
这是属性MSDN 参考Parameters

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C#-将包含关系数据表的数据集插入到SQL Server中

来自分类Dev

如何使用SQL Server替换数据表中的名称

来自分类Dev

SQL Server数据库将“ć”存储为“ c”

来自分类Dev

SQL Server数据库将“ć”存储为“ c”

来自分类Dev

归档SQL Server数据表数据?

来自分类Dev

归档SQL Server数据表数据?

来自分类Dev

使用SSIS将SQL Azure联合数据库提取到数据仓库

来自分类Dev

使用C#将SQL Server 2008中的多个SQL查询合并到ASP.NET上的数据表中

来自分类Dev

将数据从SQL Server数据库导入HTML表

来自分类Dev

在MVC C#中显示特定SQL Server数据库中每个表的列名

来自分类Dev

将数据表的内容提取到列表C#中

来自分类Dev

无法从C#中的SQL Server数据库读取

来自分类Dev

C#无法将数据插入SQL Server数据库

来自分类Dev

C#无法将数据插入SQL Server数据库

来自分类Dev

将数据从 SQL Server 数据库加载到 C#

来自分类Dev

如何使用c#将文本文件中的某些数据加载到sql server数据库中

来自分类Dev

将xlsx工作表读入SQL Server数据库中的表的代码

来自分类Dev

如何在SQL Server的数据表中动态添加行

来自分类Dev

SQL SERVER中如何通过存储过程插入数据表

来自分类Dev

如何使用C#将数组的元素插入SQL Server数据库?

来自分类Dev

将整数和字符串插入SQL Server数据库C#的问题

来自分类Dev

c#如何将多个文件上传到SQL Server数据库?

来自分类Dev

无法从C#将inkPicture插入SQL Server数据库

来自分类Dev

将数据从Microsoft Word提取到数据库表

来自分类Dev

无法自动创建SQL Server数据库中的表

来自分类Dev

将 XML 文件插入 SQL Server 中的数据库

来自分类Dev

将C#数据表批量插入到SQL Server-有效检查重复项

来自分类Dev

如何在C#中解析通用XML文件以在SQL Server数据库中创建表

来自分类Dev

使用C#插入SQL Server数据库的问题

Related 相关文章

  1. 1

    C#-将包含关系数据表的数据集插入到SQL Server中

  2. 2

    如何使用SQL Server替换数据表中的名称

  3. 3

    SQL Server数据库将“ć”存储为“ c”

  4. 4

    SQL Server数据库将“ć”存储为“ c”

  5. 5

    归档SQL Server数据表数据?

  6. 6

    归档SQL Server数据表数据?

  7. 7

    使用SSIS将SQL Azure联合数据库提取到数据仓库

  8. 8

    使用C#将SQL Server 2008中的多个SQL查询合并到ASP.NET上的数据表中

  9. 9

    将数据从SQL Server数据库导入HTML表

  10. 10

    在MVC C#中显示特定SQL Server数据库中每个表的列名

  11. 11

    将数据表的内容提取到列表C#中

  12. 12

    无法从C#中的SQL Server数据库读取

  13. 13

    C#无法将数据插入SQL Server数据库

  14. 14

    C#无法将数据插入SQL Server数据库

  15. 15

    将数据从 SQL Server 数据库加载到 C#

  16. 16

    如何使用c#将文本文件中的某些数据加载到sql server数据库中

  17. 17

    将xlsx工作表读入SQL Server数据库中的表的代码

  18. 18

    如何在SQL Server的数据表中动态添加行

  19. 19

    SQL SERVER中如何通过存储过程插入数据表

  20. 20

    如何使用C#将数组的元素插入SQL Server数据库?

  21. 21

    将整数和字符串插入SQL Server数据库C#的问题

  22. 22

    c#如何将多个文件上传到SQL Server数据库?

  23. 23

    无法从C#将inkPicture插入SQL Server数据库

  24. 24

    将数据从Microsoft Word提取到数据库表

  25. 25

    无法自动创建SQL Server数据库中的表

  26. 26

    将 XML 文件插入 SQL Server 中的数据库

  27. 27

    将C#数据表批量插入到SQL Server-有效检查重复项

  28. 28

    如何在C#中解析通用XML文件以在SQL Server数据库中创建表

  29. 29

    使用C#插入SQL Server数据库的问题

热门标签

归档