关于C#更新Access数据库时发现的一个没有任何技术含量的问题,给大家分享,希望能给大家帮助
2009-04-13 21:09
891 查看
数据库中的字段名不能写成VALUE。我的函数如下,功能是将一些存在名为AttributeValue的Dictionary中的值更新到数据库中,数据库名为Attribute_Setting,只有两列,一列是名为KEY,string类型,另一列名为Value,double类型。
public void SaveAttribute(string DataSource, Dictionary<string, double> AttributeValue)
{
string strCon = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = " + DataSource;
OleDbConnection conn = new OleDbConnection(strCon);
conn.Open();
string strCom = "";
OleDbCommand myCommand = new OleDbCommand();
myCommand.Connection = conn;
foreach (string key in AttributeValue.Keys)
{
strCom = "Update Attribute_Setting set Value = " + AttributeValue[key] + " where Key = '" + key + "'";
myCommand.CommandText = strCom;
myCommand.ExecuteNonQuery();
}
conn.Close();
}
上面的程序一直报错,总是说Update语句有语法错误,可是一直查不出来,这么简单的更新语句根本就没什么可查的……最后无奈了,乱试一起,最后才发现数据库中字段名不能用Value,估计因为Value是数据库中Insert语句的关键字吧。把库中列名改了就好了。
这个问题真没有什么技术含量,发出来希望大家看了后不要犯类似的错误,走很多弯路,浪费很多时间吧。这个问题还变态在即使用Value做列名,在查询的时候,比如使用Select Value from Attribute_Setting,还是正确的,因为我在使用上文的更新函数之前,使用的就是查询,居然查询没有问题,但更新不行!当然插入是肯定不行了……
无语!
public void SaveAttribute(string DataSource, Dictionary<string, double> AttributeValue)
{
string strCon = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = " + DataSource;
OleDbConnection conn = new OleDbConnection(strCon);
conn.Open();
string strCom = "";
OleDbCommand myCommand = new OleDbCommand();
myCommand.Connection = conn;
foreach (string key in AttributeValue.Keys)
{
strCom = "Update Attribute_Setting set Value = " + AttributeValue[key] + " where Key = '" + key + "'";
myCommand.CommandText = strCom;
myCommand.ExecuteNonQuery();
}
conn.Close();
}
上面的程序一直报错,总是说Update语句有语法错误,可是一直查不出来,这么简单的更新语句根本就没什么可查的……最后无奈了,乱试一起,最后才发现数据库中字段名不能用Value,估计因为Value是数据库中Insert语句的关键字吧。把库中列名改了就好了。
这个问题真没有什么技术含量,发出来希望大家看了后不要犯类似的错误,走很多弯路,浪费很多时间吧。这个问题还变态在即使用Value做列名,在查询的时候,比如使用Select Value from Attribute_Setting,还是正确的,因为我在使用上文的更新函数之前,使用的就是查询,居然查询没有问题,但更新不行!当然插入是肯定不行了……
无语!
相关文章推荐
- 分享一个链接,MS官方的解释:关于网络上流传的通过修改组策略“解除XP/WIN7系统默认限制20%的网速”来提高网速的问题。希望大家不要被误导。
- 好长时间上不了博客,我还以为因为我发表抗日言论账户被删了,编程中好多新经验新发现不能拿出来和朋友们分享,那个急呀。以下是我在工作中积累的一些经验和解决的一些问题,希望能对大家有一点帮助。
- 在看官方的例子时候由一个grid实例,在每一行之前有个加号,展开可以显示内容,在实际应用中还是非常有用的,照搬例子的代码,发现老是提示对象不存在,查阅资料后发现是没有加载插件,这里和大家分享下Ext.grid.RowExpander插件的使用,
- 做了一个关于水晶报表的示例,希望对大家有帮助
- 刚发现了一个问题,关于vs2005 datagridview的,我发现在设计行标头的HeaderCell.Value的时候要是设置RowTemplate.Height 的值>= 17则行标头的那个黑三角就显示出来了,要是小于17就不能显示了,想问问大家,是怎么回事?
- 一个Exchange 2010 的密码不定期弹框的问题处理,希望对大家能够有所帮助。
- [求助]关于服务器之间的文件拷贝问题,没有头绪,希望大家指点一二
- 有段时间没有更新博客了,最近比较忙,今天和大家分享一个使用Swift实现的新特性功能吧
- 问大家一个没有什么技术水平的问题!
- [企业信息化]关于LCS2005的安装总结,但还有很多问题没有解决,希望能够对象我一样的新手有所帮助
- 今天给大家分享一个购物车的例子,希望对大家有所帮助
- 一个关于指针的问题,问题很简单,但容易出错,希望大家提出好的解决方法~~~
- 一个Exchange 2010 的password不定期弹框的问题处理,希望对大家可以有所帮助。
- 好久没更新博客了,今天给大家分享一下Android中的资源与国际化的问题,通常我们新建一个Android工程,目录结构如下图所示: 我们主要看一下layout与values目录,layou
- 分享一个CLASSPATH的问题导致SERVLET出错却没有任何log
- 分享给大家一个比较正规的java坦克大战教学视频,希望对那些想学Java的人有些帮助
- ASP.Net下如何解决关于Access数据库“操作必须使用一个可更新的查询”问题
- 免费资料大放送大家好!我整理了一些免费it视频教程及电子书的资料,还不错,对开发入门或者是想提升技术高度的童鞋可能会比较有用,分享给大家,希望可以帮助到大家
- 今天在Mac机器上使用了Flex Builder编辑了一个源代码文件,保存后使用vim命令去打开时发现系统自动在每一行的结尾添加了^M符号,其实^M在Linux/Unix中是非常常见的,也就是我们在Win中见过的/r回车符号。由于编辑软件的编码问题,某些IDE的编辑器在编辑完文件之后会自动加上这个^M符号。看起来对我们的源代码没有任何影响,其实并不然,当我们把源代码文件Check In到svn之类
- 关于C# socket多线程的7个问题.希望大家发表一下意见.