当前位置: 首页 > news >正文

Access数据库和SQL Server数据库在实际应用中的区别

1.在Access数据库中简历查询语句的步骤

--> 打开你的MDB 
--> 在数据库窗口中,点击“查询”,或在“视图”菜单中选择“数据库对象”-> “查询” 
--> 点击数据库窗口中的“新建”按钮 
--> 点击“确定”,关闭“显示表”窗口 
--> 点击工具栏上的“SQL”,或在“视图”菜单中选择“SQL   视图” 
--> 删掉所有的内容 
--> 直接输入SQL语句即可

2.  Access 数据库,每次只能执行一条sql语句,如果想在Access数据库中一次执行多条Sql语句,则要使用事务进行控制

public static void ExecuteSqlTran(List<string> SQLStringList)
        {
            using (OleDbConnection conn = new OleDbConnection(SqlHelper.ConString))
            {
                conn.Open();
                OleDbCommand cmd = new OleDbCommand();
                cmd.Connection = conn;
                OleDbTransaction tx = conn.BeginTransaction();
                cmd.Transaction = tx;
                try
                {
                    for (int n = 0; n < SQLStringList.Count; n++)
                    {
                        string strsql = SQLStringList[n].ToString();
                        if (strsql.Trim().Length > 1)
                        {
                            cmd.CommandText = strsql;
                            cmd.ExecuteNonQuery();
                        }
                    }
                    tx.Commit();
                }
                catch (System.Data.OleDb.OleDbException E)
                {
                    tx.Rollback();
                    throw new Exception(E.Message);
                }
            }
        }
OldDbTransaction

3. 在SQL Server中的for xml path语句无法再Access数据库中使用

4. 操作语句

select

access数据库在有多个表查询的时候,表之间的联合语句要使用圆括号括起来,如:

SELECT * FROM (aa LEFT JOIN bb ON aa.a=bb.a) LEFT JOIN cc ON(bb.a=cc.a and bb.b=cc.b)

另外,在多表连接时,不可以使用‘Full Join’连接

access中没有 != 或者<> 但可以使用等价转换,例如 WHERE NOT (FIELDNAME = 'XXX')

update
update对于单表操作时基本一致。 
但多表操作时update语句的区别ACCESS与SQLSERVER中的UPDATE语句会有差别:
SQLSERVER中更新多表的UPDATE语句: 
UPDATE Table1 SET a.Name = b.Name FROM Table1 a, Table2 b WHERE a.ID = b.ID; 
ACCESS中同样功能的SQL语句:
UPDATE Table1 a, Table2 b SET a.Name = b.Name WHERE a.ID = b.ID;

比较得出:ACCESS中的UPDATE语句没有FROM子句,所有引用的表都列在UPDATE关键字后,这点同mysql; 

delete
SQLSERVER中:DELETE from Table1 WHERE ID > 1;
Access中:DELETE * from Table1 WHERE ID > 1;
比较得出:SQLSERVER中,即只要把select语句里的select与delete的操作语法一致的,不需要*;

5、时间字段

A:要用#号分隔,或者转换为日期

SELECT * FROM Books WHERE RegDate = #2007-5-1# 或

SELECT * FROM Books WHERE RegDate = CDate(’2007-5-1′)

S:可以直接用''

  1. SELECT * FROM Books WHERE RegDate = ‘2007-5-1′  
  2. O:To_Date  
  3. SELECT * FROM Books WHERE RegDate=To_Date('2007-05-01','yyyy-mm-dd')

6. Access数据库表中的主键要设置自动增长类型,当一个数据表中已经存在数据后,则不可以将字段设置为自动增长类型。

7.Access的查询中不能出现select top 0 from xxx 的情况

8.Access数据库的数据类型转换

CBool  Boolean  任何有效的字符串或数值表达式。

CByte  Byte  0 到 255。

CCur  Currency  -922,337,203,685,477.5808 到 922,337,203,685,477.5807。

CDate  Date  任何有效的日期表达式。

CDbl  Double  对于负值,-1.79769313486231E308 到 -4.94065645841247E-324;对于正值,4.94065645841247E-324 到 1.79769313486232E308。

CDec  Decimal  对于整数(即没有小数的数字),+/-79,228,162,514,264,337,593,543,950,335。对于具有 28 位小数的数字,值域范围是 

+/-7.9228162514264337593543950335。可能的最小非零数字为 0.0000000000000000000000000001。

CInt  Integer  -32,768 到 32,767;小数部分被四舍五入。

CLng  Long  -2,147,483,648 到 2,147,483,647;小数部分被四舍五入。

CSng  Single  对于负值,-3.402823E38 到 -1.401298E-45;对于正值,1.401298E-45 到 3.402823E38。

CStr  String  CStr 的返回值取决于 expression 参数。

CVar  Variant  对于数字,与双精度型的值域范围相同。对于非数字值,与 String 的值域范围相同。

9 ACCESS 不识别!=   替换成<>

转载于:https://www.cnblogs.com/eye-like/p/3153849.html

相关文章:

  • SQL SERVER 驱动程序错误
  • Android屏蔽返回键
  • Error: member names cannot be the same as their enclosing type
  • Apache开启GZIP 压缩网页
  • C# Unit Test 备注
  • 26种激发人创造力的天使商标设计
  • 记一条distinct 语句的优化。
  • 文件权限设置与http,php的关系
  • js控件位置
  • CEffectMgr类
  • Android_HTML解析器_jsoup
  • 如何控制项目的需求
  • IOS关于XIB文件和调试时候显示不一样问题
  • 选中CheckBoxList的值放到TextBox中,再次选中从textBox中删除
  • iPhone Push消息全攻略.1
  • “Material Design”设计规范在 ComponentOne For WinForm 的全新尝试!
  • 《微软的软件测试之道》成书始末、出版宣告、补充致谢名单及相关信息
  • 【划重点】MySQL技术内幕:InnoDB存储引擎
  • ES6系列(二)变量的解构赋值
  • Flex布局到底解决了什么问题
  • gulp 教程
  • java小心机(3)| 浅析finalize()
  • MD5加密原理解析及OC版原理实现
  • select2 取值 遍历 设置默认值
  • Spring Boot快速入门(一):Hello Spring Boot
  • Synchronized 关键字使用、底层原理、JDK1.6 之后的底层优化以及 和ReenTrantLock 的对比...
  • 包装类对象
  • 聊聊springcloud的EurekaClientAutoConfiguration
  • 你真的知道 == 和 equals 的区别吗?
  • 使用 Node.js 的 nodemailer 模块发送邮件(支持 QQ、163 等、支持附件)
  • 使用阿里云发布分布式网站,开发时候应该注意什么?
  • 腾讯优测优分享 | Android碎片化问题小结——关于闪光灯的那些事儿
  • 网络应用优化——时延与带宽
  • 蚂蚁金服CTO程立:真正的技术革命才刚刚开始
  • ​Linux Ubuntu环境下使用docker构建spark运行环境(超级详细)
  • ​力扣解法汇总1802. 有界数组中指定下标处的最大值
  • # centos7下FFmpeg环境部署记录
  • #Js篇:单线程模式同步任务异步任务任务队列事件循环setTimeout() setInterval()
  • #NOIP 2014# day.1 生活大爆炸版 石头剪刀布
  • #微信小程序(布局、渲染层基础知识)
  • #我与Java虚拟机的故事#连载16:打开Java世界大门的钥匙
  • (02)vite环境变量配置
  • (pojstep1.1.2)2654(直叙式模拟)
  • (编译到47%失败)to be deleted
  • (附源码)spring boot公选课在线选课系统 毕业设计 142011
  • (紀錄)[ASP.NET MVC][jQuery]-2 純手工打造屬於自己的 jQuery GridView (含完整程式碼下載)...
  • (深入.Net平台的软件系统分层开发).第一章.上机练习.20170424
  • (十六)一篇文章学会Java的常用API
  • (算法)Travel Information Center
  • (一)80c52学习之旅-起始篇
  • (一)VirtualBox安装增强功能
  • (转)Android学习笔记 --- android任务栈和启动模式
  • (轉貼) UML中文FAQ (OO) (UML)
  • .java 9 找不到符号_java找不到符号
  • .NET CF命令行调试器MDbg入门(三) 进程控制