萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mssql數據庫 >> 輕松教你SQL轉ACCESS

輕松教你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不

    能對備注字段進行排序或索引,卻可以對文本字段進行排序和索引。

copyright © 萬盛學電腦網 all rights reserved