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

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

 越来越觉得实践出真知,在错误中成长的最快,收获最多。

  错误:

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


  原因:

  表意:在D层查询口令中没有为@PassWord提供参数;

  隐含的意思:提供参数失败,在实体层中对应的字段中没有值,或数据库中表的字段和实体中的属性名称不对应等。这类问题大多出现在D层或数据库操作中。

  我的问题出现在:修改数据库和实体类的名称后,没有重新生成解决方案,查询语句找不到对应的信息。

 


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


 


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

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

  生成解决方案:

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


  重新生成解决方案:

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


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

  第二,比较:保存和运行

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

  运行:

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


  保存:

  可以保存在磁盘内。.


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

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

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


 20160319122244370.jpg20160319122157974.jpg




  回到我之前的错误

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

  小结:

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


相关文章
|
1月前
|
SQL 存储 数据采集
sql中varchar转number时报错怎么解决
通过上述策略的综合运用,面对VARCHAR到NUMBER的转换挑战,不仅能够游刃有余地解决现有的问题,更能前瞻性地预防未来的隐患。在数字化转型的浪潮中,凭借其高性能、安全稳定的云产品与服务,为各类企业级应用保驾护航,助您轻松驾驭数据的海洋,实现业务的无缝扩展与全球布局。
37 0
|
3月前
|
SQL 关系型数据库 MySQL
INSERT INTO t_a.tableName SELECT * FROM t_b.tableName 如何通过定义一个list对象,包含多个tableName,循环执行前面的sql,用MySQL的语法写
【8月更文挑战第7天】INSERT INTO t_a.tableName SELECT * FROM t_b.tableName 如何通过定义一个list对象,包含多个tableName,循环执行前面的sql,用MySQL的语法写
44 5
|
4月前
|
存储 SQL C++
对比 SQL Server中的VARCHAR(max) 与VARCHAR(n) 数据类型
【7月更文挑战7天】SQL Server 中的 VARCHAR(max) vs VARCHAR(n): - VARCHAR(n) 存储最多 n 个字符(1-8000),适合短文本。 - VARCHAR(max) 可存储约 21 亿个字符,适合大量文本。 - VARCHAR(n) 在处理小数据时性能更好,空间固定。 - VARCHAR(max) 对于大文本更合适,但可能影响性能。 - 选择取决于数据长度预期和业务需求。
390 1
|
4月前
|
SQL 数据库
【SQL】已解决:SQL错误(208):对象名‘STRING_SPLIT‘无效
【SQL】已解决:SQL错误(208):对象名‘STRING_SPLIT‘无效
511 0
|
6月前
user-select不可被用户选中
user-select不可被用户选中
52 0
|
SQL Oracle 关系型数据库
SQL Server2019数据库查询所有数据库名、表名、表结构、表字段、主键方法演示,执行sql提示对象名‘user_tab_columns‘、 ‘user_cons_columns‘ 无效问题解决
SQL Server2019数据库查询所有数据库名、表名、表结构、表字段、主键方法演示,执行sql提示对象名‘user_tab_columns‘、 ‘user_cons_columns‘ 无效问题解决
456 0
|
Java Linux 程序员
记录:Could not resolve placeholder 'user.userName' in value "${xxx.xx}"...【亲测有效】
记录:Could not resolve placeholder 'user.userName' in value "${xxx.xx}"...【亲测有效】
856 0
|
关系型数据库 MySQL 索引
mysql更新varchar类型字段长度报错:ERROR 1074 (42000): Column length too big for column ‘value‘ (max = 21845);
mysql更新varchar类型字段长度报错:ERROR 1074 (42000): Column length too big for column ‘value‘ (max = 21845);
|
关系型数据库 MySQL 数据库
Incorrect string value: '...' for column 'course' at row 1MySQL插入中文错误:
Incorrect string value: '...' for column 'course' at row 1MySQL插入中文错误:
112 0
Incorrect string value: '...' for column 'course' at row 1MySQL插入中文错误:
|
SQL Java 数据库连接
HQL查询 HQL Named parameter [xxx] not set 的解决办法
HQL查询 HQL Named parameter [xxx] not set 的解决办法