从0开始的小小菜鸟遇到的错误归纳以及解决方案和原因

错误归纳:

1.问题描述:方法的调用:

举例:

new AddDAL().AddNameber(result);//AddNamber 方法名  result 参数

报错信息:

AddDAL为命名空间不为类型…

解决方案及原因:

DAL层的命名空间与class类名名称重合,更改DAL的class类名

2.问题描述:Guid ID插入重复字段:000000—0000—0000—…

举例:

Model层:

namespace testModel
{[FieldInfoAttribute(CanInsert = false,CanUpDate=false)]//新增时是否忽略,更新时是否忽略
public class couse
{
 private Guid_id;
 [TableInfoAttribute(Name = "course")]//约定数据库表名
}
}

解决方案及原因:

解决方案:
将【Fiel…】与【Table…】两个位置互换

原因:
两个限定约束条件的位置写反,将两个限定约束语句调换位置,约束主键条件写在主键下,约定总体数据库表名的代码写在命名空间下。

3.问题描述:无法将Guid隐式转化为textBox:

举例:

txt_Master_ID = new Guid(txt_Master_ID.Text);

解决方案及原因:

解决方案:

txt.masterID =Guid.Parse(txt_Master_ID.Text);

原因:
txt写错,应为实体类class中的txt.masterID,且Guid除了new Guid(string sql),有另一种转化方式为Guid.Parse();

4.问题及描述:数据库creationDate值1777-01-01-00-00-00溢出VS中txt.creationDate 0001-01-01-00-00-00

举例:创建时间:1999-03-08 00:00:00

解决方案及原因:

解决原因:

在修改按钮事件中
①数据库creationDate类型为date,应改为datetime
List<Student.>list =new BLL().GetAllBLL();
直接遍历整张表,应根据主键值取出该行数据,改为GetByPK(txt.ID),在取出储存的数据库值creationDate

lab_Student_CreationDate.Text = Convert.ToString(new BLL().GetByPKBLL(txtStudentID.text).creationDate())

5.问题及描述:无法将正则表达式中间数据固定,可用来作为匹配的索引

举例:
原文件:
2020-09-28 08:36:22,339 [T:1] [ L:INFO]-更新成功,更新文件0.
正则表达式:

?<Date>.*)\[[T:1][L:INFO-更新成功,更新文件].*(?<Number>\d)

结果:没有匹配

解决方案及原因:

解决:更新成功,更新文件.[T:1][L:INFO].-.且要注意空格字符,以\s代替

(?<Date>.*)\s\[T:1][L:INFO]\s-\s更新成功,更新文件.*(?<Number>\d)//括号和尖括号格式是用于后面调用引用的字段

原因:在写固定格式中,以【】为限制方法,是错误的,应直接写原字符串。

6.问题及描述:字段初始值设定项无法引用非静态字段、方法或属性…

举例:

namespace Util_syl
public class SqlHelp
{XmlHelp help = new XmlHelp()
string strNode ="filePath/SqlConnectionstring/sql";
string path = help.GetXmlnodeValue(strNode);
}

解决方案及原因:
原因:当实例化该类后,会先进行类里所有可直接运行的代码,例如:string str =1;等各种类似代码。该过程可称为字段初始值设定。次过程是无法直接引用非静态字段、方法或属性,否则报错。
解决:建立构造函数,在调用方法的代码外层再包一个方法

构造函数:
XML类:

namespace Util_syl
public class XmlHelp
{
 XmlDocument xmlDoc = new XmlDocument();
 string path;
 
 public XmlHelp(string Path)
 {
  path = Path;
  }
  #region 读取指定节点的值---------------------
  .......
  #endregoin 
}

Sql类

namespace File_Monitor
{
    public class SqlHelp_Monitor
    {
       
        public  DBHelper dbh;
        public SqlHelp_Monitor()
        {
            XmlHelp xmlhelp = new XmlHelp(AppDomain.CurrentDomain.BaseDirectory + "监听.XML");
            string strNode = "filePath/SqlConnectionstring/sql";
            string path = xmlhelp.GetXmlNodeValue(strNode);
            dbh = new DBHelper(path);
        }

7.问题及描述:对象必须实现 IConvertible 错误提示及解决方案

如果出现以上错误。主要的原因有:
请检查数据类型转换过程有没有错误。就是说“=”两边的类型等。
还有就是存储过程中的参数,有可能你没给存储过程中的参数赋值等

对于实际遇到的问题:gridControl控件添加空白行后 不能保存到数据库。
分析认为第二种的可能性更大。

问题:
在这里插入图片描述

gridControl控件添加空白行后 不能保存到数据库。
通过属性设置添加空白行
添加的空白行 填值后,点新增或者保存到数据库,都会直接提示:对象必须实现 IConvertible 的错误提示

原因:
gridControl控件是通过绑定数据库为数据源的。绑定后,gridControl分配的内存空间是与数据库数据相同大小。当新增行且填值后,数据库的大小没有变,已经限定死。gridControl新增行属于超出了这个内存大小。所以报错。

解决方法:
在这里插入图片描述

通过给gridControl添加绑定一个过度用的数据源—>variableBindingSource
在这里插入图片描述
当gridControl控件新增行且填值后,variableBindingSource会同步扩大内存空间。再通过variableBindingSource与数据库作为绑定,将新增行添加到数据库。即可规避“对象必须实现 IConvertible ”的错误提示

8.问题及描述:var 不可使用的情景 导致“·”不出应该存在的方法

在写代码的过程中,遇到了一个很奇怪的现象,后经过大佬的分析讨论教学,解决了问题和找到原因。现在分享给跟我一样初学者的新手们一起看看。老鸟没见过的也欢迎一起学习进步。

建立一个DataTable()

dt = new DataTable();
            dt.Columns.Add("订单日期", typeof(DateTime));
            dt.Columns.Add("客户订单号");
            dt.Columns.Add("订单号");
            dt.Columns.Add("工单号");
            dt.Columns.Add("品号");
            dt.Columns.Add("品名");
            dt.Columns.Add("工单数量", typeof(int));
            dt.Rows.Add(Convert.ToDateTime("2020/9/19"), "4503285934", "2301-2009190003", "3501-2019250006", "204010003", "测试品号-AAA", 9999);//Add里面参数的数据顺序要和dt中的列的顺序对应 

通过Tab使用foreach(模板为var)

 foreach (var item in dt.Columns)
            {
                repositoryItemComboBox2.Items.Add(item);
            }

item"."不出ColumnName:如图
在这里插入图片描述

当我需要取出列名添加到后续的DEV gridControl控件中时。发现怎么都无法直接“.”出别人都有的ColumnName.只能直接添加item(后续使用报错,通过可能的错误排除找到这里)

解决原因:
分析:var 是 VS 自带的用于自动解析值类型的一个通用变量,个人认为类比 object 。但是对于foreach循环中,条件是一个多类型数据的集合list,是分析不出来具体的类型,所以传入循环内 var 还是以 list 形式存在。导致 item 怎么都不会出现应该有的ColumnName,只会有基本的几个方法(ToString…)

解决:上代码

 foreach (DataColumn item in dt.Columns)
            {
                repositoryItemComboBox2.Items.Add(item.ColumnName);
            }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值