2401_85322241 2024-06-10 22:42 采纳率: 80%
浏览 1
已结题

代码里的数据插入不进去无法执行是数据库字段的问题吗?

img


这里点确认下单没有反应,订单里也没有数据

img


就是这个页面上的数据插不进去,不知道怎么回事

  • 写回答

2条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-06-10 22:42
    关注

    引自免费微信小程序:皆我百晓生

    从你提供的代码片段来看,问题可能出在几个关键点上,包括SQL语句的格式、参数绑定、数据库连接以及事务处理。下面我会逐步分析并提供一个修正后的代码示例。

    首先,你的SQL命令中存在语法错误,具体是在VALUES子句中。你使用了(CuserNam而不是正确的@userName参数标识符。此外,参数列表中的最后一个元素后面不应该有逗号。

    修正后的SQL语句应该是这样的:

    "INSERT INTO orders(userName, RealName, postcode, address, tel, memo, totalPrice, isPay, isDeliver, orderDate) VALUES (@userName, @RealName, @postcode, @address, @tel, @memo, @totalPrice, @isPay, @isDeliver, @orderDate)"
    

    接下来,检查你的数据库连接字符串是否正确。确保System.Configuration.ConfigurationSettings.AppSettings["Db"]返回的是一个有效的数据库连接字符串。

    以下是修正后的payorder方法的代码:

    public int payorder(string UserName, string RealName, string postcode, string address, string tel, string memo)
    {
        using (SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["Db"]))
        {
            string sql = "INSERT INTO orders(userName, RealName, postcode, address, tel, memo, totalPrice, isPay, isDeliver, orderDate) VALUES (@userName, @RealName, @postcode, @address, @tel, @memo, @totalPrice, @isPay, @isDeliver, @orderDate)";
            using (SqlCommand cmd = new SqlCommand(sql, conn))
            {
                cmd.Parameters.AddWithValue("@userName", UserName);
                cmd.Parameters.AddWithValue("@RealName", RealName);
                cmd.Parameters.AddWithValue("@postcode", postcode);
                cmd.Parameters.AddWithValue("@address", address);
                cmd.Parameters.AddWithValue("@tel", tel);
                cmd.Parameters.AddWithValue("@memo", memo);
                cmd.Parameters.AddWithValue("@totalPrice", getTotalprice());
                cmd.Parameters.AddWithValue("@isPay", "0");
                cmd.Parameters.AddWithValue("@isDeliver", "0");
                cmd.Parameters.AddWithValue("@orderDate", DateTime.Now);
    
                conn.Open();
                try
                {
                    int result = cmd.ExecuteNonQuery();
                    // 如果需要获取插入后生成的ID,可以使用下面的代码
                    // object lastId = cmd.ExecuteScalar();
                    return result;
                }
                catch (Exception ex)
                {
                    // 这里可以添加错误处理逻辑
                    throw new Exception("Error inserting order: " + ex.Message);
                }
                finally
                {
                    conn.Close();
                }
            }
        }
    }
    

    这段代码包含了完整的异常处理机制,并且使用了using语句来确保资源(如数据库连接)能够被正确释放。如果getTotalprice()方法已经定义并且能够正确返回订单总价,那么上述代码应该可以解决你遇到的问题。

    如果问题仍然存在,建议检查以下几个方面:

    • 确保getTotalprice()方法返回的值类型与数据库表中totalPrice字段的类型相匹配。
    • 检查数据库表orders的字段定义,确保字段名和数据类型与SQL命令中使用的参数一致。
    • 在运行代码前,确保数据库连接字符串正确无误,并且数据库服务正在运行。
    • 如果有可能,尝试在SQL Server Management Studio或其他数据库管理工具中手动执行SQL插入语句,看是否能成功插入数据,以此来排除数据库层面的问题。
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 6月18日
  • 已采纳回答 6月10日
  • 创建了问题 6月10日

悬赏问题

  • ¥15 35114 SVAC视频验签的问题
  • ¥15 impedancepy
  • ¥15 在虚拟机环境下完成以下,要求截图!
  • ¥15 求往届大挑得奖作品(ppt…)
  • ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
  • ¥50 浦育平台scratch图形化编程
  • ¥20 求这个的原理图 只要原理图
  • ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
  • ¥20 微信的店铺小程序如何修改背景图
  • ¥15 UE5.1局部变量对蓝图不可见