sql保存数据之提示保存成功数据库无数据问题

        开发中难免会遇到一些让你想不到的问题和bug,今天我这遇到了一个最开始我认为太奇葩的问题了,怎么想都不知道是什么原因。

        问题描述:系统上线后发现其中部分表单保存提示成功,但是数据库里居然没有数据,what,这是什么情况,上线前测试是没有问题啊,怎么就突然部分表单不可以了呢?

        环境描述:系统测试一个库,正式一个库,同一个服务器

        分析问题:1、开发环境

                         2、数据库

                         3、后台代码

        问题排查:1、上面说了,开发环境是没有问题的

                         2、数据库时相同的数据库环境,查看了是否生产环境的库里的部分表单损坏(通过sql语句插入数据),发现没有问题,那么数据库也是没有问题了

        那就剩下这最后一个代码上了,基本上就是在这三方面排查了

                         3、当然不出所料,问题就是在后台代码中。

        问题所在:说问题前先说下数据库的一些知识。本人用的是Oracle数据库,sql数据库有这样一个特点:在oralce中,不同的用户,使用不同的schema. 但在sqlserver中,同一个用户可以有多个schema.

         在后台开发中数据库方面用了hibernate,但是这里有个schema属性,就是这个属性导致了我之前bug出现

<hibernate-mapping>
    <class name="com.techcomer.adm.po.AdmCard" table="ADM_CARD" schema="aaaa">
        <id name="id" type="java.lang.Long">
            <column name="ID" precision="10" scale="0" />
            <generator class="assigned" />
        </id>
        <property name="deptCode" type="java.lang.String">
            <column name="DEPT_CODE" length="20" not-null="true" />
        </property>
        <property name="applyDate" type="java.util.Date">
            <column name="APPLY_DATE" length="7" not-null="true" />
        </property>

在上述代码中,我在属性上加了schema,而aaaa就是代表了我的要访问数据库的用户,而我的生成环境用户不是aaaa,而是bbbb,这就是问题所在了。所以虽然数据库语句没问题,但是数据在正式库就是没有。把这个属性去掉就可以了,或者换成生产环境用户。

       总结:遇见问题不可怕,一步一步思路清晰,肯定能找到问题并解决掉!!!!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将datagridview修改的数据保存数据库提示保存成功或失败,可以按照以下步骤进行操作: 1. 在datagridview中编辑或添加数据后,将数据写入数据库: ```csharp // 获取datagridview的数据源 DataTable dt = (DataTable)dataGridView.DataSource; // 遍历datagridview的每一行 foreach (DataRow dr in dt.Rows) { // 判断当前行是否被修改 if (dr.RowState == DataRowState.Modified) { // 更新数据库中的数据 // SQL语句示例:UPDATE TableName SET Column1=Value1, Column2=Value2 WHERE ID=1 string sql = "UPDATE TableName SET Column1='" + dr["Column1"].ToString() + "', Column2='" + dr["Column2"].ToString() + "' WHERE ID=" + dr["ID"].ToString(); SqlCommand cmd = new SqlCommand(sql, connection); cmd.ExecuteNonQuery(); } else if (dr.RowState == DataRowState.Added) { // 插入新数据数据库中 // SQL语句示例:INSERT INTO TableName (Column1, Column2) VALUES (Value1, Value2) string sql = "INSERT INTO TableName (Column1, Column2) VALUES ('" + dr["Column1"].ToString() + "', '" + dr["Column2"].ToString() + "')"; SqlCommand cmd = new SqlCommand(sql, connection); cmd.ExecuteNonQuery(); } } // 提交事务 transaction.Commit(); // 关闭数据库连接 connection.Close(); ``` 2. 在try-catch块中捕获异常,并提示保存成功或失败: ```csharp try { // 打开数据库连接 connection.Open(); // 开始事务 transaction = connection.BeginTransaction(); // 将datagridview中的数据写入数据库 SaveDataToDatabase(); // 提交事务 transaction.Commit(); // 关闭数据库连接 connection.Close(); // 提示保存成功 MessageBox.Show("保存成功!"); } catch (Exception ex) { // 回滚事务 transaction.Rollback(); // 关闭数据库连接 connection.Close(); // 提示保存失败 MessageBox.Show("保存失败:" + ex.Message); } ``` 这样就可以将datagridview中的修改或添加操作保存数据库,并根据保存结果提示用户。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值