轻松教你SQL转ACCESS

 SQL数据库转access数据库步骤:

    1.      建立access数据库:在access中建立access数据库和表,access字段类型与sql中字段类型的对应关系。

    2.          在Access中建表是应注意它的保留关键字:比如Password 如果表中的某个字段使用了关键字,那么会导致一系列的语句错误。比如update T_Users setUsername=@Username,Password=@Password where UserId=@UserId"此时就会提示"System.Data.OleDb.OleDbException: UPDATE 语句的语法错误".更多保留关键字可以参照互联网。

    3.      从sql导入数据到access数据库。

    注意:sql2008只能导出到access2007一下的版本的数据库。

    Asp.net应做的修改

    1.        修改连接字符串:

    将<add name="DBStr"connectionString="data source=.;Database=shelian;integratedsecurity=true"/>改为

    <addname ="DBStr"connectionString ="Provider=Microsoft.Jet.OLEDB.4.0;DataSource=|DataDirectory|shelian.mdb"providerName ="System.Data.OleDb"/>

    提示:其中"Jet.OLEDB.4.0"对应的是access2003版本,"|DataDirectory|"表示数据库在App_Date目录下。

    2.   导入 using System.Data.OleDb;命名空间。

    将以Sql开头的SqlConnection , SqlCommand , SqlParameter, SqlDataAdapter, SqlParameter, SqlDataReader,SqlType等改成OleDbConnection ,OleDbCommand , OleDbParameter,OleDbDataAdapter, OleDbParameter, OleDbDataReader, OleDbType.

    3.   修改。net文件中要操作的表中字段类型的

    new SqlParameter("@CategoryName",SqlDbType.NVarChar,100),

    newSqlParameter("@ParentId",SqlDbType.NVarChar,50),

    newSqlParameter("@Path",SqlDbType.NVarChar,200),

    newSqlParameter("@Depth",SqlDbType.Int,4),

    newSqlParameter("@ChildIds",SqlDbType.NVarChar,50),

    newSqlParameter("@IsActive",SqlDbType.Bit,1),

    newSqlParameter("@ArticleNum",SqlDbType.Int,4),

    newSqlParameter("@Readme",SqlDbType.NVarChar,200),

    newSqlParameter("@CategoryId",SqlDbType.Int,4)};

    改成:

    new OleDbParameter("@CategoryName", OleDbType.LongVarWChar,100),

    new OleDbParameter("@ParentId", OleDbType.LongVarWChar,50),

    new OleDbParameter("@Path", OleDbType.LongVarWChar,200),

    new OleDbParameter("@Depth", OleDbType.Integer,4),

    newOleDbParameter("@ChildIds",OleDbType.LongVarWChar,50),

    new OleDbParameter("@IsActive", OleDbType.Boolean,1),

    new OleDbParameter("@ArticleNum", OleDbType.Integer,4),

    new OleDbParameter("@Readme", OleDbType.LongVarWChar,200),

    new OleDbParameter("@CategoryId", OleDbType.Integer,4)};

    4.   修改查询字语句式:

    4.1  将去掉true或false的单引号,如HomeShowImg='true '改成HomeShowImg=true

    4.2  !=0改成<>0  ,如 IsPicNews !=0    -> IsPicNews <>0

    4.3  =''改成is null.与LogImagePath !='  -> LogImagePath is not nul

    4.4    NewsId ='" + newsiid + "'";改成NewsId =" + newsiid + "";

5.   当update语句没错但内容无法更新而且VS又没提示出错的时候,可以考虑是不是OleDbParameter中参数的对应顺序的问题,OleDbParameter参数的顺序迎合update语句中出现的顺序保持一致。

    比如:   string cmdText = "updateT_FriendlyLink set IsShown=@IsShown,LinkUrl=@txtUrl,LinkText=@txtTitle whereId=@Id";

    OleDbParameter[]ps ={

    newOleDbParameter ("@Id",Id),

    newOleDbParameter ("@IsShown",IsShown),

    newOleDbParameter ("@txtUrl",txtUrl),

    newOleDbParameter ("@txtTitle",txtTitle),

    };

    这样在SQLServer中可以运行,但在Access中必须改成

    OleDbParameter[]ps ={

    newOleDbParameter ("@IsShown",IsShown),

    newOleDbParameter ("@txtUrl",txtUrl),

    newOleDbParameter ("@txtTitle",txtTitle),

    new OleDbParameter ("@Id",Id),

    };

    6.Access不支持:select @@IDENTITY

    7.Access不支持OW_NUMBER() OVER聚合函数。当分页时可使用"select a.* from (select top{0} * from t_news {2} {3}) a  leftjoin  (select top {1} * from t_news {2}{3}) b on a.NewsId=b.NewsId where iif(b.NewsId,'0','1')='1'", endIndex, startIndex-1, swhere, sorder));替代。

    8. 在Access 不能出现top 0或top一个负数。 如select top 0 * fromt_news where isshown=true则会报错:"SELECT子句中包含一个保留字、拼写错误或丢失的参数,或标点符号不正确。"

    Access数据库字段类型说明以及与SQL之间的对照关系

    文本 nvarchar(n)

    备注 ntext

    数字(长整型) int

    数字(整型) smallint

    数字(单精度) real

    数字(双精度) float

    数字(字节) tinyint

    货币 money

    日期 smalldatetime

    布尔 bit

    附:转换成SQL的脚本。

    ALTER TABLE tbALTER COLUMN aa Byte 数字[字节]

    ALTER TABLE tb ALTER COLUMN aa Long 数字[长整型]

    ALTER TABLE tb ALTER COLUMN aa Short 数字[整型]

    ALTER TABLE tb ALTER COLUMN aa Single 数字[单精度

    ALTER TABLE tb ALTER COLUMN aa Double 数字[双精度]

    ALTER TABLE tb ALTER COLUMN aa Currency 货币

    ALTER TABLE tb ALTER COLUMN aa Char 文本

    ALTER TABLE tb ALTER COLUMN aa Text(n) 文本,其中n表示字段大小

    ALTER TABLE tb ALTER COLUMN aa Binary 二进制

    ALTER TABLE tb ALTER COLUMN aa Counter 自动编号

    ALTER TABLE tb ALTER COLUMN aa Memo 备注

    ALTER TABLE tb ALTER COLUMN aa Time 日期/时间

    在表的设计视图中,每一个字段都有设计类型,Access允许九种数据类型:文本、备注、数值、日期/时间、货

    币、自动编号、是/否、OLE对象、超级链接、查询向导。

    文本:这种类型允许最大255个字符或数字,Access默认的大小是50个字符,而且系统只保存输入到字段中的

    字符,而不保存文本字段中未用位置上的空字符。可以设置"字段大小"属性控制可输入的最大字符长度。

    备注:这种类型用来保存长度较长的文本及数字,它允许字段能够存储长达64000个字符的内容。但Access不

    能对备注字段进行排序或索引,却可以对文本字段进行排序和索引。在备注字段中虽然可以搜索文本,但却不如

    在有索引的文本字段中搜索得快。

    数字:这种字段类型可以用来存储进行算术计算的数字数据,用户还可以设置"字段大小"属性定义一个特定

    的数字类型,任何指定为数字数据类型的字型可以设置成"字节"、"整数"、"长整数"、"单精度数"、

    "双精度数"、"同步复制ID"、"小数"五种类型。在Access中通常默认为"双精度数".

    日期/时间:这种类型是用来存储日期、时间或日期时间一起的,每个日期/时间字段需要8个字节来存储空间。

    货币:这种类型是数字数据类型的特殊类型,等价于具有双精度属性的数字字段类型。向货币字段输入数据

    时,不必键入人民币符号和千位处的逗号,Access会自动显示人民币符号和逗号,并添加两位小数到货币字段。

    当小数部分多于两位时,Access会对数据进行四舍五入。精确度为小数点左方15位数及右方4位数。

    自动编号:这种类型较为特殊,每次向表格添加新记录时,Access会自动插入唯一顺序或者随机编号,即在自

    动编号字段中指定某一数值。自动编号一旦被指定,就会永久地与记录连接。如果删除了表格中含有自动编号字

    段的一个记录后,Access并不会为表格自动编号字段重新编号。当添加某一记录时,Access不再使用已被删除的

    自动编号字段的数值,而是重新按递增的规律重新赋值。

    是/否:这种字段是针对于某一字段中只包含两个不同的可选值而设立的字段,通过是/否数据类型的格式特性,用户可以对是/否字段进行选择。

    OLE对象:这个字段是指字段允许单独地"链接"或"嵌入"OLE对象。添加数据到OLE对象字段时,可以链接或嵌入Access表中的OLE对象是指在其他使用OLE协议程序创建的对象,例如WORD文档、EXCEL电子表格、图像、声音或其他二进制数据。OLE对象字段最大可为1GB,它主要受磁盘空间限制。

    超级链接:这个字段主要是用来保存超级链接的,包含作为超级链接地址的文本或以文本形式存储的字符与数字的组合。当单击一个超级链接时,WEB浏览器或Access将根据超级链接地址到达指定的目标。超级链接最多可包含三部分:一是在字段或控件中显示的文本;二是到文件或页面的路径;三是在文件或页面中的地址。在这个字段或控件中插入超级链接地址最简单的方法就是在"插入"菜单中单击"超级链接"命令。

    查阅向导:这个字段类型为用户提供了一个建立字段内容的列表,可以在列表中选择所列内容作为添入字段的内容。

时间: 2024-10-01 20:44:55

轻松教你SQL转ACCESS的相关文章

dataset-C#执行SQL查询Access,,求大神指点

问题描述 C#执行SQL查询Access,,求大神指点 select ForceArea,UnifiedCode_5,(adminArea_8 & adminArea_81) as local,location_71,location_72 from Debris_flow_1 用C#执行这段sql语句的时候,将结果赋值给DataSet,access数据库可以执行,可是在程序里就不执行了,其中要注意哪些??求大神指点 public static DataSet DS(string SQL) {

sql-怎么使用SQL修改access数据库库表结构

问题描述 怎么使用SQL修改access数据库库表结构 怎么使用SQL修改access数据库库表结构(改动较大),同时避开表之间的关系连接,改动包括新增字段.修改字段长度.新增表 解决方案 根据sql脚本修改数据库表结构SQL语句修改数据库表结构修改SQL-SERVER数据库表结构的SQL命令 解决方案二: 删除表: Drop table [表名] 插入数据: INSERT INTO 表名 VALUES (100,'51WINDOWS.NET') 删除数据: DELETE FROM [表名] W

asp.net 与 Oracle,SQL Server,Access 数据库类(1/8)

文章提供这款数据库教程连接代码是一款asp教程.net 与 oracle,sql server,access 数据库类哦, 如果你是asp.net教程开发者那你就爽了啊,这是一款利用了.net可以与oracle,sql server,access 进行连接哦,如果你用其这一种数据库就可以直接使用了,同时也解决了关于各种数据库连接问题. using system; using system.collections; using system.collections.specialized; usi

asp连接SQL和Access数据代码(asp里的随机函数)_应用技巧

asp连接sql 第一种写法: 复制代码 代码如下: MM_conn_STRING = "Driver={SQL Server};server=(local);uid=sa;pwd=;database=infs;" Set conn = Server.Createobject("ADODB.Connection") conn.open MM_conn_STRING SET RS=SERVER.CreateObject("ADOBD.recordset&qu

免费1000M sql server/access/asp/.net免费空间

免费1000M sql server/access/asp/.net免费空间 免费空间初始大小为1000M,可按需申请提升到更大的空间: 免费空间支持绑定国际域名.二级域名等: 免费空间支持数据库,支持SQL Server, Access等: 本站免费空间拥有强大便捷的在线管理后台: 24×7的FTP访问管理,空间脚本支持 ASP, ASP.net等: 在线技术支持,空间的申请及备案等工作有专员协助您完成: 免费空间采用顶级门户网站才会采用的分布式集群技术架构: http://www.06la.

关于SQL导入Access数据,请教个问题!

问题描述 直接Sql导入Access数据的话,一些标识规范,默认值,索引,约束这些都无法弄到Sql上!手动弄的话,50多张表,有点麻烦,用Sql代码去批量创建标识规范,又不行因为已经有ID了,不能给他弄标识,除非先删除这个字段,在这样执行,但是ID不能删,删了影响百度收录如果先用SQL代码来创建表.标识规范.默认值.索引.约束!然后在导入Access数据,这样又不行,因为ID不是连续,有些ID原来被用户后台删了了!请教下各位大神,有没有好的处理办法!,谢谢了! 解决方案 解决方案二:sql先se

asp连接SQL和Access数据代码(asp里的随机函数)

asp连接sql 第一种写法: 复制代码 代码如下: MM_conn_STRING = "Driver={SQL Server};server=(local);uid=sa;pwd=;database=infs;" Set conn = Server.Createobject("ADODB.Connection") conn.open MM_conn_STRING SET RS=SERVER.CreateObject("ADOBD.recordset&qu

教你轻松恢复/修复SQL Server的MDF文件_MsSql

首先:如果备份的数据库有两个文件,分别是.LDF 和 .MDF,打开企业管理器,在实例上右击---所有任务--附加数据库,然后选择那个.MDF文件,就可以了. 或者在查询分析器中输入: 复制代码 代码如下: sp_attach_db "数据库名称","路径\文件名.ldf","路径\文件名.MDF" SQL Server数据库备份有两种方式,一种是使用BACKUP DATABASE将数据库文件备份出去,另外一种就是直接拷贝数据库文件mdf和日志文

教你轻松恢复/修复SQL Server的MDF文件

首先:如果备份的数据库有两个文件,分别是.LDF 和 .MDF,打开企业管理器,在实例上右击---所有任务--附加数据库,然后选择那个.MDF文件,就可以了. 或者在查询分析器中输入: 复制代码 代码如下:sp_attach_db "数据库名称","路径\文件名.ldf","路径\文件名.MDF" SQL Server数据库备份有两种方式,一种是使用BACKUP DATABASE将数据库文件备份出去,另外一种就是直接拷贝数据库文件mdf和日志文件