zoukankan      html  css  js  c++  java
  • 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 不识别!=   替换成<>

  • 相关阅读:
    斐波那契数列
    进制转换为伪代码
    python模拟进程
    第十一周学习总结
    第十周学习总结
    第九周学习总结
    俄罗斯方块
    熟悉编程语言
    小学四则运算
    第八周学习总结
  • 原文地址:https://www.cnblogs.com/eye-like/p/3153849.html
Copyright © 2011-2022 走看看