asp.net实验:数据库写入不成功

news2024/11/22 21:33:06

🏆本文收录于《CSDN问答解惑-专业版》专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!

问题描述

  asp.net实验:数据库写入不成功

最近在做一个租赁系统的开发实验,遇到了两个问题,
问题一:进行数据库写入时总是提示失败;
问题二:不填写预租时间提交时网页报错;对于这个问题我知道是date型数据不能为空造成的,但不知道该如何解决。
请对以上两个问题解惑,谢谢
我的设计如下:
数据库设计:

前端设计主要代码:

<tr>
                                <td class="auto-style7" style="text-align: right">设备名称:</td>
                                <td class="auto-style11">
                                    <asp:Dropdownlist ID="Device_Name" runat="server" Width="147px" AutoPostBack="True" DataTextField="DEVICE_NAME" DataValueField="DEVICE_NAME" OnSelectedIndexChanged="Device_Name_SelectedIndexChanged"></asp:Dropdownlist>
                                </td>
                                <td class="auto-style10">
                                    &nbsp;</td>
                                <td>&nbsp;</td>
                            </tr>
                            <tr>
                                <td class="auto-style7" style="text-align: right">租赁价格:</td>
                                <td class="auto-style11">
                                    <asp:Label ID="Price" runat="server" Width="142px" BorderStyle="Inset"></asp:Label>/</td>
                                <td class="auto-style10">
                                    &nbsp;</td>
                                <td>&nbsp;</td>
                            </tr>
                            
                            <tr>
                                <td class="auto-style12" style="text-align: right">租户姓名:</td>
                                <td class="auto-style13">
                                    <asp:TextBox ID="Cust_Name" runat="server" Width="142px"></asp:TextBox>
                                </td>
                                <td class="auto-style14">
                                    </td>
                                <td class="auto-style15"></td>
                            </tr>
                            <tr>
                                <td class="auto-style12" style="text-align: right">身份证号:</td>
                                <td class="auto-style13">
                                    <asp:TextBox ID="Cust_PID" runat="server" Width="142px"></asp:TextBox>
                                </td>
                                <td class="auto-style16">
                                    </td>
                                <td class="auto-style15"></td>
                            </tr>
                            <tr>
                                <td class="auto-style7" style="text-align: right">联系电话:</td>
                                <td class="auto-style11">
                                    <asp:TextBox ID="Tel" runat="server" Width="142px"></asp:TextBox>
                                </td>
                                <td class="auto-style8">
                                    &nbsp;</td>
                                <td>&nbsp;</td>
                            </tr>
                            <tr>
                                <td class="auto-style7" style="text-align: right">预租时间:</td>
                                <td class="auto-style11">
                                    <asp:TextBox ID="Pre_in" runat="server" Width="142px" TextMode="Date"></asp:TextBox>
                                </td>
                                <td class="auto-style10">
                                    &nbsp;</td>
                                <td>&nbsp;</td>
                            </tr>
                            <tr>
                                <td class="auto-style7" style="text-align: right">租借天数:</td>
                                <td class="auto-style11">
                                    <asp:TextBox ID="Pre_Days" runat="server" Width="142px"></asp:TextBox>
                                </td>
                                <td class="auto-style8">
                                    &nbsp;</td>
                                <td>&nbsp;</td>
                            </tr>
                            <tr>
                                <td class="auto-style7">&nbsp;</td>
                                <td colspan="2">
                                    <asp:Button ID="UPDATE" runat="server" Text="提交" OnClick="UPDATE_Click" />
&nbsp;
                                    <asp:Button ID="BACK" runat="server" Text="返回" OnClick="BACK_Click" />
                                </td>
                                <td>&nbsp;</td>
                            </tr>

后台设计代码

using System;
using System.Data;
using System.Configuration;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
 
public partial class device_request : System.Web.UI.Page
{
    public void DEVICEBind()
    {
        DB db = new DB();
        string sqlStr1 = "select * from device_info where DEVICE_STATUS='未租赁' ";
        DataTable Dt = db.ReDt(sqlStr1);
        Device_Name.Items.Clear();
        Device_Name.DataSource = Dt;
        Device_Name.DataTextField = "DEVICE_NAME";
        Device_Name.DataValueField = "DEVICE_NAME";
        Device_Name.DataBind();
        Device_Name.Items.Insert(0, new ListItem("", ""));
    }
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            DEVICEBind();
        }
    }
 
    protected void Device_Name_SelectedIndexChanged(object sender, EventArgs e)
    {
        string dev_name = Device_Name.SelectedValue;
        DB db = new DB();        
        string sqlStr2 = "select DEVICE_PRICE from device_price where DEVICE_NAME='" + dev_name + "' ";
        DataTable Dt2 = db.ReDt(sqlStr2);
        decimal dev_price = Convert.ToDecimal(Dt2.Rows[0]["DEVICE_PRICE"]);
        Price.Text = dev_price.ToString("C");
           
    }
 
    protected void UPDATE_Click(object sender, EventArgs e)
    {
        string dev_name = Device_Name.Text.Trim();
        string name = Cust_Name.Text.Trim();
        string pid = Cust_PID.Text.Trim();
        string tel = Tel.Text.Trim();
        DateTime pre_in = DateTime.Parse(Pre_in.Text);
        float pre_days = float.Parse(Pre_Days.Text);
        DB db = new DB();
        string sqlStr1 = "select DEVICE_PRICE from device_price where DEVICE_NAME='" + dev_name + "'";
        DataTable Dt1 = db.ReDt(sqlStr1);
        float dev_price = (float)Convert.ToDecimal(Dt1.Rows[0]["DEVICE_PRICE"]);
        float pre_spend = dev_price * pre_days;
        string sqlStr2 = "insert device_request (NAME,PID,TEL,DEVICE_NAME,LEASE_BEGIN,LEASE_TIME,PRE_SPEND) VALUES ('" + name + "','" + pid + "','" + tel + "','" + dev_name + "','" + pre_in + "'," + pre_days + "," + pre_spend + ")";
        int reValue = db.SqlEx(sqlStr2);
        if (name!="" || pid!=""|| dev_name!=""||Pre_in.Text!=""||Pre_Days.Text!="")
        {
            if(pre_in>=DateTime.Now)
            {
                if (reValue == 1)
                {
                    Response.Write("<script>alert('提交成功');</script>");
                }
                else
                {
                    Response.Write("<script>alert('信息提交失败');</script>");
                }
            }
            else
            {
                Response.Write("<script>alert('预租赁时间不能早于提交订单的时间');</script>");
            }
        }
        else
        {
            Response.Write("<script>alert('不能有空白项!');</script>");
            Response.Redirect("~/customer_room_check_in.aspx");
        } 
        
    }
 
    protected void BACK_Click(object sender, EventArgs e)
    {
        Response.Redirect("~/customer_room_introduce.aspx");
    }
}

宏文件主要代码:

using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Text;
using System.Security.Cryptography;
using System.Data.SqlClient;
public class DB
{
    public DB()
    {
        
    }
   
    public SqlConnection GetCon()
    {
        return new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"].ToString());
    }
    
    public int SqlEx(string cmdstr)
    {
        SqlConnection con = GetCon();
        con.Open();
        SqlCommand cmd = new SqlCommand(cmdstr, con);
        try
        {
            cmd.ExecuteNonQuery();
            return 1;
        }
        catch (Exception e)
        {
            return 0;
        }
        finally
        {
            con.Dispose()
        }
    }
}

web.config配置

<appSettings>
    <add key="ConnectionString" value="server=LI6HAR2AK6754L6;Uid=user;pwd=Cebpass@123;database=device_lease;" />
</appSettings>

补充:

第2个问题已经通过调整代码顺序解决;
第1个问题我找到问题原因了,是Pre_in.Text转换成DateTime类型后,数据格式与数据表device_request中LEASE_BEGIN列的数据格式不一致,数据表里这一列的数据类型是date,格式是" y-m-d",Pre_in.Text转换成DateTime类型后格式是“年-月-日 星期X hⓂ️s”,请问怎样才能把Pre_in.Text转成DateTime类型后,数据格式与数据库定义格式一致?

友情提示:
  如上问题有的来自我自身项目开发,有的收集网站,有的来自读者…如有侵权,立马删除。再者,针对此专栏中部分问题及其问题的解答思路或步骤等,存在少部分搜集于全网社区及人工智能问答等渠道,若最后实在是没能帮助到你,还望见谅!并非所有的解答都能解决每个人的问题,在此希望屏幕前的你能够给予宝贵的理解,而不是立刻指责或者抱怨!如果你有更优解,那建议你出教程写方案,一同学习!共同进步。

解决方案

  如下是上述问题的解决方案,仅供参考:

  针对您提出的两个问题,以下是我的建议和解决方案:

问题一:数据库写入失败

数据库写入失败可能由多种原因引起,以下是一些常见的原因:

  1. SQL 语句错误:检查您的 SQL 插入语句是否正确,确保字段名和数据类型与数据库中的设置相匹配。

  2. 数据库连接问题:确保数据库连接字符串正确无误,并且数据库服务正在运行。

  3. 事务处理:如果使用了事务,确保事务被正确提交或回滚。

  4. 错误处理:在 SqlEx 方法中,您应该检查 cmd.ExecuteNonQuery() 是否抛出异常,并在 catch 块中记录或输出错误信息,以便调试。

  5. 数据类型不匹配:确保传递给 SQL 语句的数据类型与数据库中的字段类型一致。例如,日期时间字段可能需要特定的格式。

对于日期时间格式问题,您可以使用 DateTime.ToString 方法来格式化日期时间字符串,以匹配数据库中的格式要求:

// 假设您希望的日期格式为 "yyyy-MM-dd"
string formattedDate = pre_in.ToString("yyyy-MM-dd");
string sqlStr2 = "insert into device_request (NAME, PID, TEL, DEVICE_NAME, LEASE_BEGIN, LEASE_TIME, PRE_SPEND) VALUES (@name, @pid, @tel, @dev_name, @pre_in, @pre_days, @pre_spend)";
SqlCommand cmd = new SqlCommand(sqlStr2, con);
cmd.Parameters.AddWithValue("@name", name);
// ... 其他参数 ...
cmd.Parameters.AddWithValue("@pre_in", formattedDate);
// 执行 SQL 命令

问题二:不填写预租时间提交时报错

您已经提到这个问题通过调整代码顺序解决了。通常,对于日期类型的字段,如果数据库中不允许为空,您需要确保在提交表单之前该字段已经被赋值。如果用户没有填写,您可以设置一个默认值,例如当前日期。

另外,对于 Pre_inTextBox 控件,您可以设置 ValidationExpression 属性来确保用户输入的是有效的日期格式:

<asp:TextBox ID="Pre_in" runat="server" Width="142px" TextMode="Date" ValidationExpression="\d{4}-\d{2}-\d{2}"></asp:TextBox>

这将要求用户输入的日期格式为 yyyy-MM-dd

最后,确保在 UPDATE_Click 方法中添加适当的验证逻辑,以检查所有必填字段是否已填写,并且在尝试插入数据库之前,所有字段都具有有效值。

希望这些建议能帮助您解决问题。如果您需要进一步的帮助,请提供更多的错误信息或代码细节。

  希望如上措施及解决方案能够帮到有需要的你。

  PS:如若遇到采纳如下方案还是未解决的同学,希望不要抱怨&&急躁,毕竟影响因素众多,我写出来也是希望能够尽最大努力帮助到同类似问题的小伙伴,即把你未解决或者产生新Bug黏贴在评论区,我们大家一起来努力,一起帮你看看,可以不咯。

  若有对当前Bug有与如下提供的方法不一致,有个不情之请,希望你能把你的新思路或新方法分享到评论区,一起学习,目的就是帮助更多所需要的同学,正所谓「赠人玫瑰,手留余香」。

☀️写在最后

  ok,以上就是我这期的Bug修复内容啦,如果还想查找更多解决方案,你可以看看我专门收集Bug及提供解决方案的专栏《CSDN问答解惑-专业版》,都是实战中碰到的Bug,希望对你有所帮助。到此,咱们下期拜拜。

码字不易,如果这篇文章对你有所帮助,帮忙给 bug菌 来个一键三连(关注、点赞、收藏) ,您的支持就是我坚持写作分享知识点传播技术的最大动力。

同时也推荐大家关注我的硬核公众号:「猿圈奇妙屋」 ;以第一手学习bug菌的首发干货,不仅能学习更多技术硬货,还可白嫖最新BAT大厂面试真题、4000G Pdf技术书籍、万份简历/PPT模板、技术文章Markdown文档等海量资料,你想要的我都有!

📣关于我

我是bug菌,CSDN | 掘金 | InfoQ | 51CTO | 华为云 | 阿里云 | 腾讯云 等社区博客专家,C站博客之星Top30,华为云2023年度十佳博主,掘金多年度人气作者Top40,掘金等各大社区平台签约作者,51CTO年度博主Top12,掘金/InfoQ/51CTO等社区优质创作者;全网粉丝合计 30w+;硬核微信公众号「猿圈奇妙屋」,欢迎你的加入!免费白嫖最新BAT互联网公司面试真题、4000G PDF电子书籍、简历模板等海量资料,你想要的我都有,关键是你不来拿哇。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2095198.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

国庆节微信头像怎么制作?制作国庆国旗节日头像的4个方法

国庆将至&#xff0c;不少朋友的微信头像都换成了渐变红旗头像&#xff0c;是不是觉得超酷呢&#xff1f;如果你也想拥有这样的头像&#xff0c;那就跟着这篇文章一起操作吧&#xff01; 国庆节前夕&#xff0c;让我们先来了解一下如何制作渐变红旗头像。首先&#xff0c;我们需…

基于Python的Flask框架实战全流程从新建到部署【2】

本项目是基于win10系统运行以及操作的&#xff0c;部署在win7系统。 Flask 是一个轻量级的可定制框架&#xff0c;使用Python语言编写&#xff0c;较其他同类型框架更为灵活、轻便、安全且容易上手。 本文是flask框架实战项目&#xff0c;从新建、运行、测试、部署项目…

C/C++的内存分布、动态内存管理等的介绍

文章目录 前言一、C/C的内存分布二、C/C动态内存管理总结 前言 C/C的内存分布、动态内存管理等的介绍 一、C/C的内存分布 因为程序在运行过程中需要存储一些不同的数据&#xff0c;所以需要对内存空间进行分类 二、C/C动态内存管理 C语言动态内存管理是malloc / calloc / rea…

光降解水凝胶:三色光响应

大家好&#xff0c;今天来了解一种三色可见光波长选择性光降解水凝胶生物材料——《Tricolor visible wavelength-selective photodegradable hydrogel biomaterials》发表于《Nature Communications》&#xff0c;其交联剂Rubiq、Rubp和oNB对低能可见光&#xff08;400 - 617n…

洛科威岩棉板重塑屋面应用,以多重优势成为“优选材料”

屋面作为建筑物的“外衣”&#xff0c;不仅承载着遮风挡雨的基本功能&#xff0c;更在保温隔热、防火安全、防潮隔音等方面发挥着举足轻重的作用。然而&#xff0c;面对极端气候、自然灾害以及日益严苛的环保标准&#xff0c;传统屋面材料逐渐暴露出其局限性&#xff0c;保温效…

JVM垃圾判定算法

垃圾收集技术是Java的一堵高墙。Java堆内存中存放着几乎所有的对象实例&#xff0c;垃圾收集器在对堆内存进行回收前&#xff0c;第一件事情就是要确定这些对象中哪些还存活&#xff0c;哪些已经死去&#xff08;即不可能再被任何途径使用的对象&#xff09;。也就是判定垃圾。…

STM32 使用8720 通过LWIP发送数据

一、硬件IOC 1、GPIO 2、NVIC 3、SYS 4、RCC 5、ETH 6、USART 7、LWIP 二、软件函数 1、Main /* USER CODE BEGIN Includes */ #include "ytcesys.h" /* USER CODE END Includes *//* USER CODE BEGIN 2 */ ethreset(); MX_LWIP_Init(); OPEN_USART1…

chunqiude

CVE-2022-28512 靶标介绍&#xff1a; Fantastic Blog (CMS)是一个绝对出色的博客/文章网络内容管理系统。它使您可以轻松地管理您的网站或博客&#xff0c;它为您提供了广泛的功能来定制您的博客以满足您的需求。它具有强大的功能&#xff0c;您无需接触任何代码即可启动并运…

【Java开发】Maven安装配置详细教程

原创文章&#xff0c;不得转载。 文章目录 产生背景用途安装配置本地仓库配置镜像 产生背景 在Java应用程序开发中&#xff0c;随着项目规模的不断扩大和复杂性增加&#xff0c;项目依赖的库、插件和配置文件也变得愈加复杂。传统的项目构建工具&#xff08;如Ant&#xff09;…

简单选择排序例题

从上面题目看出&#xff0c;如果排序方法可保证在排序前后排序码相同的相对位置不变&#xff0c;也就是四个选项里&#xff0c;21和21*之间不会交换 简单选择排序方法是&#xff1a;首先在所有记录中找到排序吗最小的记录&#xff0c;把它与第一个记录交换&#xff0c;然后在其…

EXO:模型最终验证的地方;infer_tensor;step;MLXDynamicShardInferenceEngine

目录 EXO:模型最终验证的地方 EXO:infer_tensor EXO:step MXNet的 mx.array 类型是什么 NDArray优化了什么 1. 异步计算和内存优化 2. 高效的数学和线性代数运算 3. 稀疏数据支持 4. 自动化求导 举例说明 EXO:模型最终验证的地方 EXO:infer_tensor 这段代码定…

【科技前沿】用深度强化学习优化电网,让电力调度更聪明!

Hey小伙伴们&#xff0c;今天我要跟大家分享一个超级酷炫的技术应用——深度强化学习在电网优化中的典型案例&#xff01;如果你对机器学习感兴趣&#xff0c;或是正寻找如何用AI技术解决实际问题的方法&#xff0c;这篇分享绝对不容错过&#xff01;&#x1f469;‍&#x1f4…

Pyqt5高级技巧2:Tab顺序、伙伴快捷键、各类常用控件的事件、可移动的卡片式布局(含基础Demo)

目录 一、编辑Tab顺序 二、编辑伙伴 三、设置快捷键&#xff08;仅MainWindow可用&#xff09; 四、信号槽 【基本介绍】 【常用信号槽】控件对窗体&#xff08;拖地&#xff09; 【常用信号槽】控件对控件 【自定义信号槽】步骤 五、设计文件的转化 六、GUI的运行 1…

【研发日记】吃透新能源充电协议(一)——GB27930实例报文解析

文章目录 前言 背景介绍 充电协议框架 充电握手阶段 充电准备阶段 充电传输阶段 充电结束阶段 错误处理阶段 总结 参考资料 前言 近期在一个嵌入式开发项目中&#xff0c;用到了新能源充电协议&#xff0c;期间在翻阅各种资料文件时&#xff0c;一些地方还是容易理解…

包装和类练习 Stack的使用

目录 1.最小栈 2.有效的括号 3.栈的压入、弹出序列 4.逆波兰表达式求值 5.链栈与顺序栈相比&#xff0c;比较明显的优点是&#xff08; &#xff09; 1.最小栈 2.有效的括号 class Solution {public boolean isValid(String s) {Stack<Character> st new Stack<&g…

I/O方式

目录 一、程序查询方式 1.程序查询方式的特点 2.程序查询方式可分类 ①独占查询 ②定时查询 二、中断方式 1.中断I/O流程 2.例题 三、DMA方式 1.DMA控制器 2.特点 3. DMA的传送方式 ①停止CPU ②周期挪用 ③DMA和CPU交替访存 4.传送流程 ①预处理 ②数据传…

AIGC时代算法工程师的面试秘籍(第二十一式2024.8.19-9.1) |【三年面试五年模拟】

写在前面 【三年面试五年模拟】旨在整理&挖掘AI算法工程师在实习/校招/社招时所需的干货知识点与面试经验&#xff0c;力求让读者在获得心仪offer的同时&#xff0c;增强技术基本面。也欢迎大家提出宝贵的优化建议&#xff0c;一起交流学习&#x1f4aa; 欢迎大家关注Rocky…

海外云服务器安装 JDK8 (Ubuntu 18.04 记录篇)

本文首发于 秋码记录 曾几何时&#xff0c;我可是国内云厂商的忠实用户啊。 而今&#xff0c;却不再为云服务器&#xff08;尤指国内云厂商&#xff09;续费了&#xff0c;作为我的个人网站 秋码记录 选择了托管在 gitlab.com Pages服务上。 国内云厂商对新老用户持有两种截…

Linux网络编程入门及OSI七层模型

目录 OSI七层模型 TCP/IP五层(或四层)模型 ​编辑 协议报头 局域网 以太网 令牌环网 无线LAN OSI七层模型 TCP/IP五层(或四层)模型 物理层: 负责光/电信号的传递方式. 比如现在以太网通用的网线(双绞 线)、早期以太网采用的的同轴电缆 (现在主要用于有线电视)、光纤, 现…

全能型AI与专业型AI:未来的选择与挑战

引言 随着人工智能技术的飞速发展&#xff0c;市场上出现了多种类型的AI产品&#xff0c;其中全能型AI与专业型AI是两大主要类别。近期&#xff0c;OpenAI预计推出的代号为“草莓”的新AI引起了广泛关注&#xff0c;这一全能型AI的推出引发了关于未来AI趋势的热烈讨论。在这个…