C#机房重构之错误集锦(三)

简介: C#机房重构之错误集锦(三)

错误越多,收获越大,感觉这次收获满满啊!

#内容

##1.必须声明标量变量

一种可能就是你的U层没有给变量赋值,这次我遇到的就是这种错误。

##2.为将对象引用设置到对象的实例

解决办法:这个错误无论是菜鸟、大鸟、老鸟,都有可能遇到,菜鸟的此错误一般都是因为传值没有穿进去。在错误处设置断点,向前逐个排除变量,看看哪个变量为空值,传值之后就解决了。

##3.需要提供参数,但未提供该参数。

解决办法:一般情况都是D层传参的函数中没有传参的参数,且U层没有赋值,如下,给U层赋值之后,去D层传参,就解决了。

##4.字符串转换整数失败

解决办法:SQL语句要记牢

##5.删除数据库冗余数据-已更新或删除的行值要么不能使该行成为唯一行,要么改变了多个行。

解决办法:

敲代码的时候经常会在数据库中增加很多冗余数据,有时候直接右键删除此列,会失败,因为你更新或删除的行值使这一行数据成为了唯一值,所以我提供了一种直接删除整个表的SQL语句,大家可以收收藏一下。

  TRUNCATE TABLE 表名 //删除表中所有数据

##6.列名无效

原因:数据库中没有该列名

办法:添加该列名,或者去D层删除对该列名的修改更新信息。

##7.方法的类型签名与Interop不兼容

原因:在导出Excel时报的这个错,因为这个代码所用的Excel版本不兼容,需要更换整个导出Excel的代码。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Office.Interop.Excel;//导出Excel
using System.Data.OleDb;
using System.Windows.Forms;


namespace UI
{
    public class ExcelOut
    {
        //导出excel
        public void RExcel(string name, DataGridView dgv)
        {
            //总可见行列数
            int rowCount = dgv.Rows.GetRowCount(DataGridViewElementStates.Visible);
            int colCount = dgv.Columns.GetColumnCount(DataGridViewElementStates.Visible);

            //如果没有数据
            if (dgv.Rows.Count == 0 || rowCount == 0)
            {
                MessageBox.Show("表中没有数据", "提示");
            }
            else
            {
                //创建文件的路径
                SaveFileDialog save = new SaveFileDialog();
                save.Filter = "excel files(*.xlsx)|*.xlsx";
                save.Title = "请选择要导出数据的位置";
                save.FileName = name + DateTime.Now.ToLongDateString();

                if (save.ShowDialog() == DialogResult.OK)
                {
                    string fileName = save.FileName;

                    //创建excel对象
                    Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
                    if (excel == null)
                    {
                        MessageBox.Show("Excel无法启动", "提示");
                        return;
                    }

                    //创建工作薄
                    Microsoft.Office.Interop.Excel.Workbook excelBook = excel.Workbooks.Add(true);
                    Microsoft.Office.Interop.Excel.Worksheet excelSheet = (Microsoft.Office.Interop.Excel.Worksheet)excelBook.Worksheets[1];

                    //生成字段名
                    int k = 0;
                    for (int i = 0; i < dgv.ColumnCount; i++)
                    {
                        if (dgv.Columns[i].Visible)//不导出隐藏列
                        {
                            excel.Cells[1, k + 1] = dgv.Columns[i].HeaderText;
                            k++;
                        }
                    }

                    //填充数据
                    for (int i = 0; i < dgv.RowCount; i++)
                    {
                        //if (true)
                        //{

                        //}
                        k = 0;
                        for (int j = 0; j < dgv.ColumnCount; j++)
                        {
                            if (dgv.Columns[j].Visible)//不导出隐藏的列
                            {
                                if (dgv[j, i].ValueType == typeof(string))
                                {
                                    excel.Cells[i + 2, k + 1] = "" + dgv[j, i].Value.ToString();
                                }
                                else
                                {
                                    excel.Cells[i + 2, k + 1] = dgv[j, i].Value.ToString();
                                }
                            }
                            k++;
                        }
                    }

                    try
                    {
                        excelBook.Saved = true;
                        excelBook.SaveCopyAs(fileName);
                        MessageBox.Show("导出成功!");
                    }
                    catch
                    {
                        MessageBox.Show("导出文件失败,文件可能正在使用中", "提示");
                    }
                }
            }
        }

    }
    }

##小结

收获满满,及时总结。

目录
相关文章
|
6天前
|
BI C# C++
C#机房重构之报表
C#机房重构之报表
19 0
|
6天前
|
C#
C# 机房合作代码块
C# 机房合作代码块
19 0
|
6天前
|
C#
C#机房重构之错误集锦(二)
C#机房重构之错误集锦(二)
16 0
|
10月前
|
C# 数据安全/隐私保护
C#机房重构-修改密码之职责链模式+反射
C#机房重构-修改密码之职责链模式+反射
44 0
|
6天前
|
开发框架 前端开发 .NET
C#编程与Web开发
【4月更文挑战第21天】本文探讨了C#在Web开发中的应用,包括使用ASP.NET框架、MVC模式、Web API和Entity Framework。C#作为.NET框架的主要语言,结合这些工具,能创建动态、高效的Web应用。实际案例涉及企业级应用、电子商务和社交媒体平台。尽管面临竞争和挑战,但C#在Web开发领域的前景将持续拓展。
|
6天前
|
SQL 开发框架 安全
C#编程与多线程处理
【4月更文挑战第21天】探索C#多线程处理,提升程序性能与响应性。了解C#中的Thread、Task类及Async/Await关键字,掌握线程同步与安全,实践并发计算、网络服务及UI优化。跟随未来发展趋势,利用C#打造高效应用。
|
6天前
|
存储 安全 网络安全
C#编程的安全性与加密技术
【4月更文挑战第21天】C#在.NET框架支持下,以其面向对象和高级特性成为安全软件开发的利器。本文探讨C#在安全加密领域的应用,包括使用System.Security.Cryptography库实现加密算法,利用SSL/TLS保障网络传输安全,进行身份验证,并强调编写安全代码的重要性。实际案例涵盖在线支付、企业应用和文件加密,展示了C#在应对安全挑战的同时,不断拓展其在该领域的潜力和未来前景。
|
6天前
|
人工智能 C# 开发者
C#编程中的图形界面设计
【4月更文挑战第21天】本文探讨了C#在GUI设计中的应用,介绍了Windows Forms、WPF和UWP等常用框架,强调了简洁界面、响应式设计和数据绑定等最佳实践。通过实际案例,展示了C#在企业应用、游戏开发和移动应用中的GUI实现。随着技术发展,C#在GUI设计的未来将趋向于跨平台、更丰富的组件和AI集成,为开发者创造更多可能性。
|
6天前
|
存储 算法 C#
C#编程与数据结构的结合
【4月更文挑战第21天】本文探讨了C#如何结合数据结构以构建高效软件,强调数据结构在C#中的重要性。C#作为面向对象的编程语言,提供内置数据结构如List、Array和Dictionary,同时也支持自定义数据结构。文章列举了C#实现数组、链表、栈、队列等基础数据结构的示例,并讨论了它们在排序、图算法和数据库访问等场景的应用。掌握C#数据结构有助于编写高性能、可维护的代码。
|
6天前
|
开发框架 Linux C#
C#编程的跨平台应用
【4月更文挑战第21天】C#与.NET Core的结合使得跨平台应用开发变得高效便捷,提供统一编程模型和高性能。丰富的类库、活跃的社区支持及Visual Studio Code、Xamarin等工具强化了其优势。广泛应用在企业系统、云服务和游戏开发中,虽面临挑战,但随着技术进步,C#在跨平台开发领域的前景广阔。