C#窗体应用程序可能会遇到的一些奇怪问题

最近在上程序实训课,写一个管理程序,主要是用了C#,在VS2017平台,在开发过程中自然是少不了很多奇怪的问题,做个记录。

有下面几个问题:

问题1:.Conversion failed when converting from a character string to uniqueidentifier.

问题2:ExecuteNonQuery 要求已打开且可用的 Connection。连接的当前状态为已关闭。

 问题3:CS0012  类型"Object"在未引用的程序集中定义。必须添加对程序集“mscorlib, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089”的引用。

目前主要用到的数据库结构如下。

连接数据库的很多错都是报在ID这个特殊的类型上面,也就是唯一标识符uniqueidentifier,在程序中的类型是Guid,但是因为在一个数据库中标识符其实是少不掉的,所以这些问题也绕不开。

问题1:Conversion failed when converting from a character string to uniqueidentifier.

问题背景就是输入的id格式就是一个字符串,然后在查询的时候就会出现问题。为了方便查看,我把问题放到了sql查询中,如下:

Select * from Operator where id='3a9a2894-f9f6-4ffe-b8e6-a67e949f276c'

这个问题困扰了我很久,在程序运行的过程中经常断开,查询了资料是因为什么...已经忘了,具体的解决方案如下:

select * from Operator where id =CAST('3a9a2894-f9f6-4ffe-b8e6-a67e949f276c' AS UNIQUEIDENTIFIER)

问题2:ExecuteNonQuery 要求已打开且可用的 Connection。连接的当前状态为已关闭。

这个问题其实说的方式已经很直接了,但是我也是好几次忘记了,也是卡住了一会。具体的背景就是在连接数据库查询的时候会报错,解决方案就是记得打开连接,就是下面的Open。

扫描二维码关注公众号,回复: 15914614 查看本文章
 using (SqlConnection conn = new SqlConnection(connStr))
 {
     conn.Open();
     SqlCommand commUpdate = new SqlCommand(sql, conn);
     int n = commUpdate.ExecuteNonQuery();
     if (n > 0)
     {
        flag = true;
     }
}

 问题3:CS0012  类型"Object"在未引用的程序集中定义。必须添加对程序集“mscorlib, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089”的引用。 

 这个错误非常奇怪且诡异,具体表现就是创建的类库在依赖项里面无法引用一些库比如System.Configuration,可能报一些很诡异的错误,反正看看不懂,下面都是可能会出现的

 查遍几乎所有相关博客没找到解决方案,后来在一次偶然机会中发现的两种类库的细微差别,仔细看类库其实是有Standard和Framework两种类型的,我一开始创建了Standard,所以很多不兼容,后来改为Framework就没有问题了。如果你也是像我一样,在窗体应用程序里报类似这种错误,那么可以考虑是不是因为创建的类型不太对而导致。

猜你喜欢

转载自blog.csdn.net/weixin_60360239/article/details/129286925