参数化查询 '(@UserName nvarchar(1),@PassWord nvarchar(4000))Select * from Us未提供“@PassWord”参数

时间:2021-11-28 18:50:21
   越来越觉得实践出真知,在错误中成长的最快,收获最多。

   错误:

   参数化查询 '(@UserName nvarchar(1),@PassWord nvarchar(4000))Select * from Us未提供“@PassWord”参数

   原因:

   表意:在D层查询口令中没有为@PassWord提供参数;    隐含的意思:提供参数失败,在实体层中对应的字段中没有值,或数据库中表的字段和实体中的属性名称不对应等。这类问题大多出现在D层或数据库操作中。    我的问题出现在:修改数据库和实体类的名称后,没有重新生成解决方案,查询语句找不到对应的信息。

   

   即:修改代码和数据库后只点击了“保存”,没有重新生成解决方案。

   

   在VS中,有生成解决方案,重新生成解决方案,保存和运行。以前总感觉这些功能就是将代码写好后存到VS中, 搞这么复杂做什么,运行就可以替换生成解决方案嘛!但经过深入查资料后,感觉自己傻傻哒!

   第一,比较:生成解决方案和重新生成解决方案

   生成解决方案:

   如果工程没有编译过就全部编译,已经编译过了只对修改过的有关内容进行编译。也就是说:只对你改动过的文件重新生成没有改动过的文件不会重新生成;

   重新生成解决方案:

   是对所有的文件都重新生成,就是先清理一次对所有文件再进行编译。(清理:把编译器编译出来的文件都清理掉,包括可执行文件链接库。)

   以cpp为例,我你只改动某些.cpp之类的文件的时候,可以用生成,省了编译没有改动的那些些文件的时间,这样比较节省时间;但是改动了某些.h之类的文件最好用重新生成,因为有可能能有些文件包含.h文件也需要重新编译,时间会稍长一些。

   第二,比较:保存和运行

   我在运行前先对我的程序进行了保存,本以为保存后就能正常运行了,但并没有,所以,保存和生成解决方案是有区别的。同时,想起了之前用VB实现《机房收费系统》第一版时,在点击运行,会自动提醒:保存并运行?这之间有什么区别吗?

   运行:

   是进你的内存或者虚拟内存,不会保存在电脑上的。电脑临时创建一个程序用来浏览该文件,关闭后信息就全部丢失。

   保存:

   可以保存在磁盘内。.

   这说明,如果我们在没有保存刚编码的地方的情况下,运行我们的程序,突然断电,程序不仅仅是不能继续运行的问题,更是将丢失之前可能好几个小时的辛苦劳动的问题!(真心感觉现在的Office,CSDN,为知笔记,邮箱等都添加了自动保存到草稿箱的功能这一举措真的很贴心。)

   那么问题来了,我们在VS中进行“保存”操作时没有生成解决方案吗?

   拿穿衣服做个比喻——某天,突然来了阵凉风,我穿了件单薄的外套,想加件保暖内衣,于是就将保暖内衣套在了外套的外面,哈哈,不冷了,这个过程就是保存。但是美观吗?能这样出门吗?当然不能,这叫不能运行!所以,我要将穿衣服这个过程重新生成解决方案。先将以前的外套脱下来(清理文件,正如上面所说的,重新生成解决方案时,要清理一次所有文件再进行编译,包括可执行文件链接库。)再穿上保暖内衣和外套(重新编译生成文件),这样我就可以漂漂亮亮的出门了,这叫程序顺利运行!上面说过了,运行不一定就已经保存了,如果我对我运行能运行的这套解决方案不满意,也是可以换掉,不保存的。

   参数化查询 '(@UserName nvarchar(1),@PassWord nvarchar(4000))Select * from Us未提供“@PassWord”参数参数化查询 '(@UserName nvarchar(1),@PassWord nvarchar(4000))Select * from Us未提供“@PassWord”参数

   回到我之前的错误

   因为将代码中的属性和数据库修改后直接保存,并没有生成解决方案,所以在运行时,程序还是按照以前的解决方案运行,而不是我修改代码之后的方案,从数据库中找不到信息,所以出错了。

   小结:

   微软公司开发VS软件是为我们服务的,绝不是刁难我们的,所以我们得按照人家的统一规定行事才能让顺利完成我们的编程。