C# 访问查询中存在IF的替代项

C# 访问查询中存在IF的替代项,c#,asp.net,ms-access,if-statement,C#,Asp.net,Ms Access,If Statement,我正在使用C和Access数据库在ASP.NET中开发一个网站,但使用需要检查的查询时遇到问题: 如果表中存在某些信息,则更新, 如果没有,则插入表中 我有SQL中的代码,Access不接受该代码。我想知道是否有其他方法来实现它,或者Access是否可以使用if exists子句的替代方法。以下是SQL代码: 创建过程ShoppingCartAjoutProduits @CartID char36, @produtid int, @属性字符255 像 如果存在 选择CartID 从购物车 其中P

我正在使用C和Access数据库在ASP.NET中开发一个网站,但使用需要检查的查询时遇到问题:

如果表中存在某些信息,则更新, 如果没有,则插入表中 我有SQL中的代码,Access不接受该代码。我想知道是否有其他方法来实现它,或者Access是否可以使用if exists子句的替代方法。以下是SQL代码:

创建过程ShoppingCartAjoutProduits @CartID char36, @produtid int, @属性字符255 像 如果存在 选择CartID 从购物车 其中PRODUTID=@PRODUTID和CartID=@CartID 更新购物车 设置量化=量化+1 其中PRODUTID=@PRODUTID和CartID=@CartID 其他的 如果存在,则从livres中选择滴定度,其中NumLivre=@NumLivre 插入ShoppingCart CartID、ProduitID、属性、数量、日期路线 值@CartID、@produtid、@attributes、1、GETDATE
Access SQL不支持过程代码;VBA在Access中处理这些问题。但是,您可以在C代码中始终使用以下方式执行这些操作:

使用OleDbCommand cmd=新OleDbCommand,cmd2=新OleDbCommand { 字符串cartID=Cart1// int produtid=1;//测试数据 字符串属性=je-ne-sais-quoi// int numLivre=1// cmd.Connection=con;//现有OleDbConnection,已存在。打开 cmd.CommandType=System.Data.CommandType.Text; cmd.CommandText= 从ShoppingCart中选择*+ 其中cartID=?和produtid=?; cmd.Parameters.Add?,OleDbType.VarWChar,255.Value=cartID; cmd.Parameters.Add?,OleDbType.Integer.Value=produitID; var da=新的OleDbDataAdaptercmd; var cb=新的OleDbCommandBuilderda; cb.QuotePrefix=[;cb.QuoteSuffix=]; var dt=新System.Data.DataTableShoppingCart; da.Filldt; 如果dt.Rows.Count>0 { int n=Convert.ToInt32dt.Rows[0][Quantite]; dt.行[0][Quantite]=++n; } 其他的 { cmd2.Connection=con; cmd2.CommandType=System.Data.CommandType.Text; cmd2.CommandText= 从livres中选择COUNT*AS n,其中NumLivre=?; cmd2.Parameters.AddWithValue?,numLivre; int n=Convert.ToInt32cmd2.ExecuteScalar; 如果n>0 { System.Data.DataRow dr=dt.NewRow; dr[CartID]=CartID; dr[produtid]=produtid; dr[attributes]=属性; dr[Quantite]=1; dr[DateAjoute]=DateTime.Today; dt.Rows.Adddr; } } da.更新; }
嗨,Gord,很抱歉回复晚了,我还没有测试,在我执行该方法之前,我被困在了其他地方。。。我正在尝试首先在用户的计算机上创建一个cookie,但我有一个异常,我正在尝试解决,但我还没有找到解决方案,我会让你嗨!Gord,你的方法帮我想出了一个主意,即使我没有完全按照你的建议写。。。但这对解决我的问题帮助很大。但是我认为CodeSideC中的UPDATE方法还有另一个问题,如果我尝试从它调用,它不会向我发送错误消息,但是数据库中没有任何更改。我不明白我为什么要用程序!