帮忙看一段简单的代码,哪有错误,谢过了~~~
public bool TimeDiffAddOrEdit(string InterZh,string InterEn,string CountryZh,string CountryEn,string CityZh,string CityEn,string TimeSign,string TimeDiffHour,string TimeDiffMin)
{
string sql="UPDATE [CmdTimeDiff] SET [InterZh]=@InterZh,[CountryZh]=@CountryZh,[CityZh]=@CityZh WHERE [InterEn]='"+InterEn+"' AND [CountryEn]='"+CountryEn+"' AND [CityEn]='"+CityEn+"'";
//(我把where的条件都限制死了)
OleDbCommand olecmd=new OleDbCommand(sql,conn);
olecmd.Parameters.Add(new OleDbParameter ("@InterZh",OleDbType.VarChar,50));
olecmd.Parameters["@InterZh"].Value=InterZh;
olecmd.Parameters.Add(new OleDbParameter ("@InterEn",OleDbType.VarChar,50));
olecmd.Parameters["@InterEn"].Value=InterEn;
olecmd.Parameters.Add(new OleDbParameter ("@CountryZh",OleDbType.VarChar,50));
olecmd.Parameters["@CountryZh"].Value=CountryZh;
olecmd.Parameters.Add(new OleDbParameter ("@CountryEn",OleDbType.VarChar,50));
olecmd.Parameters["@CountryEn"].Value=CountryEn;
olecmd.Parameters.Add(new OleDbParameter ("@CityZh",OleDbType.VarChar,50));
olecmd.Parameters["@CityZh"].Value=CityZh;
olecmd.Parameters.Add(new OleDbParameter ("@CityEn",OleDbType.VarChar,50));
olecmd.Parameters["@CityEn"].Value=CityEn;
olecmd.Parameters.Add(new OleDbParameter ("@TimeSign",OleDbType.VarChar,2));
olecmd.Parameters["@TimeSign"].Value=TimeSign;
olecmd.Parameters.Add(new OleDbParameter ("@TimeDiffHour",OleDbType.Integer));
olecmd.Parameters["@TimeDiffHour"].Value=TimeDiffHour;
olecmd.Parameters.Add(new OleDbParameter ("@TimeDiffMin",OleDbType.Integer));
olecmd.Parameters["@TimeDiffMin"].Value=TimeDiffMin;
olecmd.Connection.Open();
try
{
olecmd.ExecuteNonQuery();
olecmd.Connection.Close();
return true;
}
catch(Exception ex)
{
olecmd.Connection.Close();
throw new Exception(ex.Message);
}
}
原数据
ASIA 亚洲 Japan 日本 Dongjing 东京
执行后数据
ASIA 亚洲new Japan ASIA Dongjing 日本new
结果都完全错位了~~~
我观察了几遍,觉得Access和C#的用OleDbCommand写入或修改数据,@变量是有顺序的~~~~也就是SQL语句@出现顺序要和olecmd.Parameters[]的顺序一致~~~~~