C#中ACCESS数据库常⽤操作语句...容易出错的地⽅(DateTime
类型)
这次在C#编程过程中,第⼀次⽤到了ACCESS数据库,重点涉及到时间类型,整数类型。是否类型....;遇到了许多困难,就把这些整理了下来,与⼤家分享。
⼀、Insert语句的基本格式:
INSERT INTO Tablename[(column1name,[column2name, ...])]VALUES (value1, [value2, ...])
1.表的字段名称可能是数据库的保留字,这时需把这个字段名称⽤"[]"括起来,
保留字的情况: INSERT INTO Employee([Name],id,dno)VALUES(’王强’,4007,3)
⾮保留字的情况:INSERT INTO Employee(name,id,dno)VALUES(’王强’,4007,3)
在这⾥,Name是数据库的关键字,name则不是。所以在写数据的时候你要避开保留字的情况
2.INSERT INTO Persons VALUES ('Gates', 'Bill', 'Xuanwumen 10', 'Beijing',4007)在这⾥要注意要⽤到字符串形式(⽂本)的时候,要加上(‘)的注释,在编程语⾔中要加上转义字符\'
如果是整数的话,不⽤加引号,注意字段名是不需要加引号的
以下是最后的sql语句
string sql = "INSERT INTO Test ([DateTime],RawInformation)VALUES(\'" + dt.ToString() + "\',\'" + raw + "\')";
⼆、update语句的基本格式
UPDATE Tablename SET column1name = value1,[ column2name = value2, ...] [WHERE conditions]
1.在选择或者更新的时候SQL语句中where结构关于datetime的⽐较
最终的解决⽅案执⾏字符串为两种情况:
1.1string sql = "UPDATE [Test] SET [isinvaild]= \'" + issuccess + "\',[silk]=" + data[0] + ",[zone1]=" + data[1] + ",[zone2]=" + data[2] + ", [zone3]=" + data[3] + ",[zone4]=" + data[4] + " where [DateTime]=#" + dt + "#";
2.string sql = "UPDATE [Test] SET [isinvaild]= \'" + issuccess + "\',[silk]=" + data[0] + ",[zone1]=" + dat
a[1] + ",[zone2]=" + data[2] + ", [zone3]=" + data[3] + ",[zone4]=" + data[4] + " where cstr(DateTime) =\'" + dt+"\'"
在这⾥主要到的是:
第⼀种情况:对于Access数据库时间格式需要在前后加上“#”号来标注,第⼆是datetime还是要⽤到[]来标注起来
第⼆种情况:我们把字段DateTime中的记录转化成了字符串的形式跟所选择的时间进⾏⽐较
三、select语句的基本格式
SELECT column_name, [column_name,] ...FROM table_list/view_list
还是在选择的时候遇到时间的选取遇到的难题,⽐较最终的解决⽅案
1.选在某⼀时间段的数据记录
string sql = "select [DateTime],[silk],[zone1],[zone2],[zone3],[zone4] from [Test] where [DateTime] between#" + dateTimePicker_start.Value + "#and #" + dateTimePicker_end.Value + "#";
string sql = "select [DateTime],[silk],[zone1],[zone2],[zone3],[zone4] from [Test] where [DateTime]>#" + dateTimePicker_start.Value +
"#AND [DateTime]<#" + dateTimePicker_end.Value+ "#";
上⾯两种⽅法都可以实现要求,最重要的突破点是:where语句后⾯不能将条件⽤双引号引起来,最重要的是在时间前后需要加上#符号
2.选择在某⼀时刻前的(或后的)的数据记录
string sql = "select [DateTime],[silk],[zone1],[zone2],[zone3],[zone4] from [Test] where [DateTime] >#" + dateTimePicker_start.Value + "#"; string sql = "select [DateTime],[silk],[zone1],[zone2],[zone3],[zone4] from [Test] where datediff(\'s\',[DateTime],#" +
dateTimePicker_start.Value + "#)<0";
以上两种⽅法都可以⾏得通,后者只不过是将时刻的⽐较转化为了整数再⽐较,还是在提⼀句最⼤的就是要时间的前后加上#符号
ACCESS编程常出现的错误注意点:
1.在ACCESS表达式中,⽇期型常量应使⽤[] 为定界符括起来
2.保留字字段名最好⽤[]为定界符括起来
3.符号必须是在英⽂状态下的,尤其=<>等符号
4.SQL语法中,字符串变量必须使⽤单引号括起来
6.DateDiff 函数返回变量型(长型),指定两个指定的⽇期之间的时间间隔数。如有需要《SQL查询语⾔技术》电⼦⼿册,请留⾔datediff是字符型函数
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论