困惑啊,各位帮我看看到底哪里错了,WinForm中与Access中的语法不一样吗?:
WinForm使用的是ACCESS2003的数据库:
UserInfo表结构
-------------------
UserId 数字
UserName 文本
Password 文本
Department 文本
EmailFrom 文本--------Winform中代码:private void AppyUserSettingBtn_Click(object sender, EventArgs e)
{
OleDbConnection conn = new OleDbConnection(ConfigurationManager.ConnectionStrings["TaxConnStr"].ConnectionString);
//连接字符串是:Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\TaxDB.mdb;Persist Security Info=True
try
{
OleDbCommand cmd = new OleDbCommand();
cmd.CommandType = CommandType.Text;
cmd.Connection = conn;
//检测是否已存在相同的EmployID
cmd.CommandText = "SELECT COUNT(*) FROM UserInfo WHERE UserId=" + EmployeeIdTb.Text.Trim();
conn.Open();
int EffectRow = int.Parse(cmd.ExecuteScalar().ToString());
if (EffectRow == 0)
{
cmd.CommandText = "INSERT INTO UserInfo (UserId,UserName, Password, Department, EmailFrom) VALUES (" + EmployeeIdTb.Text + ", '" + UserNameTb.Text.Trim() + "', '" + PwdTb.Text + "', '" + DepartmentTb.Text.Trim() + "', '" + UserNameTb.Text.Trim() + "@" + MailAddrTb.Text.Trim() + "' )";
//当没有相同数据时:跟踪CommandText="INSERT INTO UserInfo (UserId,UserName, Password, Department, EmailFrom) VALUES (1482, 'sea', '123456', 'Finance', '[email protected]' )"
//当执行到下面的cmd.ExecuteNonQuery();时,提示“Insert Into语法错误”,而把这段Insert语句复制到Access中执行则执行成功!
}
else
{
cmd.CommandText = "UPDATE UserInfo SET UserName='" + UserNameTb.Text.Trim() + "', Password='" + PwdTb.Text + "', Department='" + DepartmentTb.Text.Trim() + "', EmailFrom='" + UserNameTb.Text.Trim() + "@" + MailAddrTb.Text.Trim() + "' WHERE UserId=" + EmployeeIdTb.Text;
//当有相同数据时:跟踪CommandText="UPDATE UserInfo SET UserName='sea', Password='123456', Department='Finance', EmailFrom='[email protected]' WHERE UserId=1482"
//当执行到下面的cmd.ExecuteNonQuery();时,提示“Update语法错误”,而把这段Update复制到Access中执行则执行成功!
}
cmd.ExecuteNonQuery();//执行到这发生错误,跳到Catch块
conn.Close();
MessageBox.Show("设置用户信息成功", "设置成功", MessageBoxButtons.OK, MessageBoxIcon.Information); }
catch (Exception ex)
{
if (conn.State != ConnectionState.Closed)
{
conn.Close();
}
MessageBox.Show("错误:" + ex.Message, "发生错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
WinForm使用的是ACCESS2003的数据库:
UserInfo表结构
-------------------
UserId 数字
UserName 文本
Password 文本
Department 文本
EmailFrom 文本--------Winform中代码:private void AppyUserSettingBtn_Click(object sender, EventArgs e)
{
OleDbConnection conn = new OleDbConnection(ConfigurationManager.ConnectionStrings["TaxConnStr"].ConnectionString);
//连接字符串是:Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\TaxDB.mdb;Persist Security Info=True
try
{
OleDbCommand cmd = new OleDbCommand();
cmd.CommandType = CommandType.Text;
cmd.Connection = conn;
//检测是否已存在相同的EmployID
cmd.CommandText = "SELECT COUNT(*) FROM UserInfo WHERE UserId=" + EmployeeIdTb.Text.Trim();
conn.Open();
int EffectRow = int.Parse(cmd.ExecuteScalar().ToString());
if (EffectRow == 0)
{
cmd.CommandText = "INSERT INTO UserInfo (UserId,UserName, Password, Department, EmailFrom) VALUES (" + EmployeeIdTb.Text + ", '" + UserNameTb.Text.Trim() + "', '" + PwdTb.Text + "', '" + DepartmentTb.Text.Trim() + "', '" + UserNameTb.Text.Trim() + "@" + MailAddrTb.Text.Trim() + "' )";
//当没有相同数据时:跟踪CommandText="INSERT INTO UserInfo (UserId,UserName, Password, Department, EmailFrom) VALUES (1482, 'sea', '123456', 'Finance', '[email protected]' )"
//当执行到下面的cmd.ExecuteNonQuery();时,提示“Insert Into语法错误”,而把这段Insert语句复制到Access中执行则执行成功!
}
else
{
cmd.CommandText = "UPDATE UserInfo SET UserName='" + UserNameTb.Text.Trim() + "', Password='" + PwdTb.Text + "', Department='" + DepartmentTb.Text.Trim() + "', EmailFrom='" + UserNameTb.Text.Trim() + "@" + MailAddrTb.Text.Trim() + "' WHERE UserId=" + EmployeeIdTb.Text;
//当有相同数据时:跟踪CommandText="UPDATE UserInfo SET UserName='sea', Password='123456', Department='Finance', EmailFrom='[email protected]' WHERE UserId=1482"
//当执行到下面的cmd.ExecuteNonQuery();时,提示“Update语法错误”,而把这段Update复制到Access中执行则执行成功!
}
cmd.ExecuteNonQuery();//执行到这发生错误,跳到Catch块
conn.Close();
MessageBox.Show("设置用户信息成功", "设置成功", MessageBoxButtons.OK, MessageBoxIcon.Information); }
catch (Exception ex)
{
if (conn.State != ConnectionState.Closed)
{
conn.Close();
}
MessageBox.Show("错误:" + ex.Message, "发生错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货