protected void signup_submit_ServerClick(object sender, ImageClickEventArgs e)
    {
        //入数据库
        string connStr = EightourConfiguration.DbConnectionString;
        string loginNameValue = LoginName.Value;
        string passwordValue = Password.Value;
        string mobileValue = Mobile.Value;
        string emailValue = Email.Value;
        string sexValue = Sex.SelectedValue;
        int sex = 2;
        if (sexValue == "T")
        {
            sex = 1;
        }
        else if (sexValue == "F")
        {
            sex = 0;
        }
        string chineseNameValue = ChineseName.Value;
        string addressValue = Address.Value;
        string postcodeValue = Postcode.Value;
        string telValue = Tel.Value;

//注意参数顺序
        string updateSql = "insert into MB_BaseInfo ([LoginName],[Password],[ChineseName],[Sex]) values (@Para_LoginName,@Para_Password,@Para_ChineseName,@Para_Sex)";
        OleDbCommand cmd = new OleDbCommand(updateSql);

//注意参数顺序与上面一一对应
        OleDbParameter Para_LoginName = new OleDbParameter("@Para_LoginName", System.Data.OleDb.OleDbType.VarChar, 50);
        Para_LoginName.Value = loginNameValue;
        cmd.Parameters.Add(Para_LoginName);

OleDbParameter Para_Password = new OleDbParameter("@Para_Password", System.Data.OleDb.OleDbType.VarChar, 50);
        Para_Password.Value = passwordValue;
        cmd.Parameters.Add(Para_Password);

OleDbParameter Para_ChineseName = new OleDbParameter("@Para_ChineseName", System.Data.OleDb.OleDbType.VarChar, 50);
        Para_ChineseName.Value = chineseNameValue;
        cmd.Parameters.Add(Para_ChineseName);

OleDbParameter Para_Sex = new OleDbParameter("@Para_Sex", System.Data.OleDb.OleDbType.Integer);
        Para_Sex.Value = sex;
        cmd.Parameters.Add(Para_Sex);
       
        int lastId = -1;

using (OleDbConnection myConnection = new OleDbConnection(connStr))
            {
                cmd.Connection = myConnection;
                myConnection.Open();   
                OleDbTransaction trans = myConnection.BeginTransaction();
                cmd.Transaction = trans;
                try
                {
                    cmd.ExecuteNonQuery();
                    cmd.CommandText = "select @@identity";
                    lastId = Convert.ToInt32(cmd.ExecuteScalar().ToString());
                    trans.Commit();
                }
                catch (Exception exc)
                {
                    trans.Rollback();
                    throw new Exception(exc.Message);
                }
                finally
                {
                }
            }
            if (lastId == -1) return;

bool isSuccess = false;

//注意参数顺序
        updateSql = "insert into MB_PersonalInfo ([BaseInfoId],[Tel],[Mobile],[Address],[Postcode],[Email]) values(@Para_BaseInfoId,@Para_Tel,@Para_Mobile,@Para_Address,@Para_Postcode,@Para_Email)";
        cmd = new OleDbCommand(updateSql);

//注意参数顺序与上面并不一一对应
        OleDbParameter Para_BaseInfoId = new OleDbParameter("@Para_BaseInfoId", System.Data.OleDb.OleDbType.Integer);
        Para_BaseInfoId.Value = lastId;
        cmd.Parameters.Add(Para_BaseInfoId);

OleDbParameter Para_Tel = new OleDbParameter("@Para_Tel", System.Data.OleDb.OleDbType.VarChar, 50);
        Para_Tel.Value = telValue;
        cmd.Parameters.Add(Para_Tel);

//这里现在是Postcode邮政编码,上面第三个参数是Mobile,不对应了。
        OleDbParameter Para_Postcode = new OleDbParameter("@Para_Postcode", System.Data.OleDb.OleDbType.VarChar, 50);
        Para_Postcode.Value = postcodeValue;
        cmd.Parameters.Add(Para_Postcode);

OleDbParameter Para_Mobile = new OleDbParameter("@Para_Mobile", System.Data.OleDb.OleDbType.VarChar, 50);
        Para_Mobile.Value = mobileValue;
        cmd.Parameters.Add(Para_Mobile);

OleDbParameter Para_Address = new OleDbParameter("@Para_Address", System.Data.OleDb.OleDbType.VarChar,255);
        Para_Address.Value = addressValue;
        cmd.Parameters.Add(Para_Address);

OleDbParameter Para_Email = new OleDbParameter("@Para_Email", System.Data.OleDb.OleDbType.VarChar, 255);
        Para_Email.Value = emailValue;
        cmd.Parameters.Add(Para_Email);

using (OleDbConnection myConnection = new OleDbConnection(connStr))
        {
            cmd.Connection = myConnection;
            myConnection.Open();
            OleDbTransaction trans = myConnection.BeginTransaction();
            cmd.Transaction = trans;
            try
            {
                cmd.ExecuteNonQuery();
                trans.Commit();
                isSuccess = true;
            }
            catch (Exception exc)
            {
                trans.Rollback();
                throw new Exception(exc.Message);
            }
            finally
            {
            }
        }
        if (isSuccess)
        {
            lblNotifier.Visible = true;
            lblNotifier.Text = "<br /><font color='red'><b>你已成功注册!</b></font><script language='Javascript'>alert('恭喜您,注册成功!');</script>";
        }
        else
        {
            lblNotifier.Visible = false;
        }
    }
执行上面代码时,结果发现数据库表中Mobile的值成了Postcode的值,Address的值成了Mobile的值.....乱套了。
如果将上面的相关顺序调整一下,变成一一对应,就可以了。

在SQL Server数据库中就不会涉及此类问题。看来,是ACCESS的局限。

转载于:https://www.cnblogs.com/webcs/archive/2009/10/17/1584964.html

OleDbParameter在Access数据库Insert时参数不对应的怪现象[友情提示]相关推荐

  1. excel oledb mysql_通用Excel设置外部数据源引入Access数据库数据时,提示:“尚未注册 OLE DB 访问接口 Microsoft.Ace.Oledb.12.0”...

    在通用Excel中开发各种ERP.CRM.OA.进销存.内控管理.项目管理.工程施工管理.客户关系管理.绩效考核管理.销售管理.采购管理.仓库管理.行政管理.财务管理.人事管理.生产管理.考勤管理等系 ...

  2. MS Access 数据库操作使用OledbParameter出现的怪异问题

    今天,我试图解决前段时间在开发诗年华网站中遇到的使用Oledb对Access数据库操作时出现的参数类型不匹配的问题,在写了几段示例代码并查阅了相关网络文章后发现,问题并不在这里. 首先,我是使用反射根 ...

  3. 使用PHP从Access数据库中提取对象,第2部分

    In the first part of this series we learned how to extract packaged objects from a legacy Access dat ...

  4. Python如何操作Access数据库及如何操作accdb文件

    目前来说,Access数据库的使用度相对较少,所以在使用Python操作Access数据库文件时,相应的文章和教程也较少.为了解决各位在类似场景下的难题,特意写文章如下: 1.安装模块pyodbc p ...

  5. 对 Access 数据库中日期字段操作时 OleDbParameter 的问题及解决

    比如 SQL 语句: Update [table] Set [CreateDate]=@CreateDate Where ... 其参数使用:New OleDbParameter("@Cre ...

  6. C#使用OleDB操作ACCESS插入数据时提示:参数 @p_Contract 没有默认值

    C#使用OleDB操作ACCESS插入数据时提示:参数 @p_Contract 没有默认值 OleDbParameter param = new OleDbParameter("" ...

  7. C#连接Access数据库,Update更新数据时出现“不能打开数据库,应用程序可能无法识别该数据库。。。”错误

    在使用C#的oledb连接Access数据库时,使用事务来对数据库进行数据增加和修改,前面的insert语句都可以正常执行,而到Update更新表格数据时,程序出现了"不能打开数据库,应用程 ...

  8. 使用c#訪问Access数据库时,提示找不到可安装的 ISAM

    使用c#訪问Access数据库时,提示找不到可安装的 ISAM.例如以下图: 代码例如以下: connectionString = "Provider=Microsoft.Jet.OLEDB ...

  9. java通过Access_JDBC30读取access数据库时无法获取最新插入的记录

    1.编写了一个循环程序,每几秒钟读取一次,数据库中最新一行数据 连接access数据库的方法和查询的信息.之后开一个定时去掉用. package javacommon.util;import java ...

最新文章

  1. 公钥私钥 多久过期_上传到公钥服务器的gpg公钥过期了会被删除吗?
  2. MySQL中删除重复数据
  3. LinkButton指定ClientOnClick的问题
  4. 使用Ajax的Spring MVC REST调用
  5. 第4章操作系统基础第五版Aimin.rar
  6. Mac安装Cobalt Strike 4 【亲测有用】
  7. Mr.J--Java基础问题30问
  8. 使用SignalR和SQLTableDependency进行记录更改的SQL Server通知
  9. freemaker转word xml注意事项
  10. 如何防止SWF文件被反编译
  11. PHP+MySQL实现留言板功能
  12. ps切图怎么做成html,PS切图怎么导出网页 PS切图怎么生成源代码
  13. python 读bin文件_Python学习 | Python 读写文件-bin文件打开
  14. CentOS 7 VM虚拟机安装docker步骤
  15. XiunoBBS插件大全,可视化XiunoBBS插件
  16. Fuzzing及Sulley简介
  17. 基于Python的招聘推荐与薪资预测系统的设计与实现
  18. 关于matlab提示“警告: 矩阵为奇异工作精度” 的问题
  19. 小马哥---高仿苹果6sp主板型号 W3215 6582刷机拆机主板图
  20. 政客常用手段_我可以比政客更好地管理经济

热门文章

  1. 数字孪生基本概念与入门-上篇
  2. C语言的“空指针”与“野指针”
  3. 嵌入式编程之软件工程师需要了解的一些基本硬件知识
  4. 小程序笔记(二)另一种方便获取wxapkg方法
  5. 免费计算机EBOOK下载(英文版)
  6. this.$confirm用法
  7. Apache Solr 9.1-(一)初体验单机模式运行
  8. ajaxfileupload的使用实例
  9. Java 23种设计模式(1.设计模式概念和UML)
  10. 华为转单,支持中国芯片代工企业净利润猛增四倍