OleDbParameter在Access数据库Insert时参数不对应的怪现象[友情提示]
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时参数不对应的怪现象[友情提示]相关推荐
- excel oledb mysql_通用Excel设置外部数据源引入Access数据库数据时,提示:“尚未注册 OLE DB 访问接口 Microsoft.Ace.Oledb.12.0”...
在通用Excel中开发各种ERP.CRM.OA.进销存.内控管理.项目管理.工程施工管理.客户关系管理.绩效考核管理.销售管理.采购管理.仓库管理.行政管理.财务管理.人事管理.生产管理.考勤管理等系 ...
- MS Access 数据库操作使用OledbParameter出现的怪异问题
今天,我试图解决前段时间在开发诗年华网站中遇到的使用Oledb对Access数据库操作时出现的参数类型不匹配的问题,在写了几段示例代码并查阅了相关网络文章后发现,问题并不在这里. 首先,我是使用反射根 ...
- 使用PHP从Access数据库中提取对象,第2部分
In the first part of this series we learned how to extract packaged objects from a legacy Access dat ...
- Python如何操作Access数据库及如何操作accdb文件
目前来说,Access数据库的使用度相对较少,所以在使用Python操作Access数据库文件时,相应的文章和教程也较少.为了解决各位在类似场景下的难题,特意写文章如下: 1.安装模块pyodbc p ...
- 对 Access 数据库中日期字段操作时 OleDbParameter 的问题及解决
比如 SQL 语句: Update [table] Set [CreateDate]=@CreateDate Where ... 其参数使用:New OleDbParameter("@Cre ...
- C#使用OleDB操作ACCESS插入数据时提示:参数 @p_Contract 没有默认值
C#使用OleDB操作ACCESS插入数据时提示:参数 @p_Contract 没有默认值 OleDbParameter param = new OleDbParameter("" ...
- C#连接Access数据库,Update更新数据时出现“不能打开数据库,应用程序可能无法识别该数据库。。。”错误
在使用C#的oledb连接Access数据库时,使用事务来对数据库进行数据增加和修改,前面的insert语句都可以正常执行,而到Update更新表格数据时,程序出现了"不能打开数据库,应用程 ...
- 使用c#訪问Access数据库时,提示找不到可安装的 ISAM
使用c#訪问Access数据库时,提示找不到可安装的 ISAM.例如以下图: 代码例如以下: connectionString = "Provider=Microsoft.Jet.OLEDB ...
- java通过Access_JDBC30读取access数据库时无法获取最新插入的记录
1.编写了一个循环程序,每几秒钟读取一次,数据库中最新一行数据 连接access数据库的方法和查询的信息.之后开一个定时去掉用. package javacommon.util;import java ...
最新文章
- 公钥私钥 多久过期_上传到公钥服务器的gpg公钥过期了会被删除吗?
- MySQL中删除重复数据
- LinkButton指定ClientOnClick的问题
- 使用Ajax的Spring MVC REST调用
- 第4章操作系统基础第五版Aimin.rar
- Mac安装Cobalt Strike 4 【亲测有用】
- Mr.J--Java基础问题30问
- 使用SignalR和SQLTableDependency进行记录更改的SQL Server通知
- freemaker转word xml注意事项
- 如何防止SWF文件被反编译
- PHP+MySQL实现留言板功能
- ps切图怎么做成html,PS切图怎么导出网页 PS切图怎么生成源代码
- python 读bin文件_Python学习 | Python 读写文件-bin文件打开
- CentOS 7 VM虚拟机安装docker步骤
- XiunoBBS插件大全,可视化XiunoBBS插件
- Fuzzing及Sulley简介
- 基于Python的招聘推荐与薪资预测系统的设计与实现
- 关于matlab提示“警告: 矩阵为奇异工作精度” 的问题
- 小马哥---高仿苹果6sp主板型号 W3215 6582刷机拆机主板图
- 政客常用手段_我可以比政客更好地管理经济