当前位置: 首页 > 知识库问答 >
问题:

c# - 封装SqlHelper类遇到插入数据的问题?

仇阳州
2024-01-17

封装一个ADO.net,插入一条数据不能显示插入内容而是变量名
调用封装方法

 [HttpPost] public string Insert(string userName, string password, string userLevel, string userNo) {  SqlHelper sqlHelper = new SqlHelper();     SqlParameter[] sqlParameters = new SqlParameter[]     {         new SqlParameter("@UserName",userName),         new SqlParameter("@Password",password),         new SqlParameter("@UserLevel",userLevel),         new SqlParameter("@UserNo",userNo)     };     sqlHelper.ExecuteNonQuery("INSERT INTO users ( UserName, Password, UserLevel, UserNo ) VALUES ( '@UserName', '@Password', '@UserLevel', '@UserNo' )", sqlParameters );     return "数据插入成功!"; }

封装的方法

 public int ExecuteNonQuery(string cmdText,params SqlParameter[] sqlParameters) {     using SqlConnection sqlConnection = new SqlConnection(ConnectionStr);     sqlConnection.Open();     SqlCommand sqlCommand = new SqlCommand(cmdText,sqlConnection);     sqlCommand.Parameters.AddRange(sqlParameters);     return sqlCommand.ExecuteNonQuery(); }

设置断点后看到,形参已经拿到输入内容,但是变量始终没有赋值成功。
image.png

共有2个答案

刘瑞
2024-01-17

去掉引号。

image.png

加了引号就是个普通字符串、而不是参数了。

呼延卓
2024-01-17

你的问题在于你的INSERT语句中,你试图将参数值插入到字符串中,这是不正确的。在你的INSERT语句中,你不需要再次引用参数名称。你只需要在VALUES部分提供参数值即可。

这是修正后的代码:

[HttpPost]public string Insert(string userName, string password, string userLevel, string userNo){      SqlHelper sqlHelper = new SqlHelper();    SqlParameter[] sqlParameters = new SqlParameter[]    {        new SqlParameter("@UserName", userName),        new SqlParameter("@Password", password),        new SqlParameter("@UserLevel", userLevel),        new SqlParameter("@UserNo", userNo)    };    sqlHelper.ExecuteNonQuery("INSERT INTO users (UserName, Password, UserLevel, UserNo) VALUES (@UserName, @Password, @UserLevel, @UserNo)", sqlParameters);    return "数据插入成功!";}

在这个修正后的代码中,我已经移除了在INSERT语句中的参数名称引用。现在,参数值将会正确地被传递到你的SQL命令中。希望这能解决你的问题。

 类似资料:
  • 所有的 C++ 程序都有以下两个基本要素: 程序语句(代码):这是程序中执行动作的部分,它们被称为函数。 程序数据:数据是程序的信息,会受到程序函数的影响。 封装是面向对象编程中的把数据和操作数据的函数绑定在一起的一个概念,这样能避免受到外界的干扰和误用,从而确保了安全。数据封装引申出了另一个重要的 OOP 概念,即数据隐藏。 数据封装是一种把数据和操作数据的函数捆绑在一起的机制,数据抽象是一种仅

  • 主要内容:1. 数据封装示例,2. 设计策略所有Objective-C程序都由以下两个基本要素组成 - 程序语句(代码) - 这是执行操作的程序的一部分,它们被称为方法(函数)。 程序数据 - 数据是受程序功能影响的程序信息。 封装是一种面向对象的编程概念,它将操作数据的数据和功能绑定在一起,并保护其免受外部干扰和误用。 数据封装导致了重要的OOP数据隐藏概念。 数据封装是捆绑数据和使用函数的机制,数据抽象是一种仅暴露接口并从用户隐藏实现细

  • 本文向大家介绍C#编写SqlHelper类,包括了C#编写SqlHelper类的使用技巧和注意事项,需要的朋友参考一下 无聊的周末,学习、编码无力。想找点事干但又不知道干点什么,猛然发现自己学过的SqlHelper快忘记了。于是乎虎躯一震心想怎能如此堕落下去,立马打开电脑,双手摸上键盘。写下此文作为学习过程中的复习,并分享出知识(顺便打发时间-^.^-)。 下面开始正文 这里以控制台程序为案例。首

  • 我在Spring Data JPA+Hibernate中使用Javers。当我使用curdrepository.save(Collection)时,Javers API会逐一审核集合中的每个对象,这会导致整个插入过程的延迟。 在集成Javers之前,处理100行需要30秒,集成Javers之后需要80秒。

  • 我在尝试将记录插入数据库时遇到错误。 错误如下: 守则: 数据库:

  • 本文向大家介绍Java版数据结构插入数据时遇到的结点为空的问题详解,包括了Java版数据结构插入数据时遇到的结点为空的问题详解的使用技巧和注意事项,需要的朋友参考一下 在演示Java版数据结构与算法教材中的头插法代码时遇到了空结点问题 。 先上代码。 链表类 节点类 测试类 测试,在判断p是否为空执行输出的时候,p一直为null。  打断点调试的时候发现了问题所在。 因为java把引用类型当作了指