『壹』 vs 調用本地 access的代碼,後可以使用sql語句
第一:連接字元串
首先在web.config文件配置(Access2003和2007都一樣)
<connectionStrings>
<add name='DBPath' connectionString='~/App_Data/Web.mdb'/>
<!--資料庫路徑,前面的~必須保留-->
</connectionStrings>
第二:連接字元串
Access2003:
'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + System.Web.HttpContext.Current.Server.MapPath(ConfigurationManager.ConnectionStrings['DBPath'].ToString());
Access2007:
'Provider=Microsoft.ace.OLEDB.12.0;Data Source=' + System.Web.HttpContext.Current.Server.MapPath(ConfigurationManager.ConnectionStrings['DBPath'].ToString());
第三:寫SQL語句時,欄位名和表明都要加上[],避免了關鍵字這種錯誤。
『貳』 安裝了SqlServer Manager能幫忙把SQL的bak文件轉成Access的mdb一下嗎
看了一下,不幫你轉了,因為不能轉,或者說,轉出來的ACCESS資料庫你也用不了。
下面有一個人幫你轉了,你去試試就明白了,這是多累了的,也是不負責的,或者說,它是外行。
以下是詳情:
1、還原到我的SQL伺服器上看了一下,這個資料庫除了幾十個表外,還有幾十個存儲過程。
2、ACCESS沒有真正意義上的存儲過程,別說SQL Server中的存儲過程不能導入到ACCESS中去,就算能導,它也無法正常執行。事實上,Access(2000 及以上版本)有類似於「存儲過程」的嵌入SQL語句執行功能,但和 SQL Server 中的 存儲過程是不能比的。它只能算是「偽存儲過程」,不支持多條 SQL 語句,不支持邏輯語句等等。
3、存儲過程就象是一個倉庫的管理人員,沒有存儲過程的資料庫就象是沒有倉庫管理員的倉庫,一切存取數據都要來訪者自個來處理,效率低下。
4、對你來說,最重要的是,導出的ACCESS根本不能與已有的前台匹配使用,就象你搞來的機器少了核心發動機一樣(還是上面說過的,ACCESS沒有「存儲過程功能」,比方地說,就是,ACCESS的倉管員只有幼兒園的3歲孩子的水平,SQL Server的高級技師做的事,幼兒園的孩子是做不來的)。
『叄』 SQL語句能用在ACCESS上嗎
Access+SQL語句
在Access資料庫中建表
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con = DriverManager.getConnection("jdbc:odbc:zjw","","");
String tablename = "xl_"+jgname;
String sql_create = "CREATE TABLE " +tablename+" (id VARCHAR(20) PRIMARY KEY, 開關 VARCHAR(20),正母閘刀 VARCHAR(20),副母閘刀 VARCHAR(20), 線路閘刀 VARCHAR(20),開關母線側地刀 VARCHAR(20),開關線路側地刀 VARCHAR(20),線路側地刀 VARCHAR(20),母差投退 VARCHAR(20),母差復歸 VARCHAR(20) )";
String sql_insert_1 = " INSERT INTO " +tablename+" values ('1','開關','正母閘刀','副母閘刀','線路閘刀','開關母線側地刀','開關線路側地刀','線路側地刀','母差投退','母差復歸')";
String sql_insert_2 = " INSERT INTO " +tablename+" values ('2','0','0','0','0','0','0','0','0','0')";
String sql_insert_3 = " INSERT INTO " +tablename+" values ('3',?, ? ,? , ? ,? ,? ,?,?,?)";
String sql_insert_4= " INSERT INTO " +tablename+" values ('4','162','104','212','156','255','212','104','525','65')";
String sql_insert_5 = " INSERT INTO " +tablename+" values ('5','137','220','220','83','220','132','82','533','264')";
PreparedStatement create_pstmt=con.prepareStatement(sql_create);
create_pstmt.executeUpdate();
create_pstmt.close();
在Access資料庫中重命名表
來源:中國大學生網 時間:2005-10-16 18:53:18 責任編輯:雨 【字體:大 小】
下面代碼是用Adox重命名Access表名的示例代碼:
Dim Conn,ConnStr,oCat,oTbl
ConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("data.mdb")
Set oCat=Server.CreateObject("ADOX.Catalog")
oCat.ActiveConnection = ConnStr
Set oTbl = Server.CreateObject("ADOX.Table")
Set oTbl = oCat.Tables("OldTable") '要重命名的表名:OldTable
oTbl.Name = "NewTable" '新表名
Set oCat = Nothing
Set oTbl = Nothing
Sql server 中可以用Sql語句直接重命名表,
下面是Sql Server 和 Access 操作資料庫結構的常用Sql,希望對你有所幫助。
內容由海娃整理,不正確與不完整之處還請提出,謝謝。
新建表:
create table [表名]
(
[自動編號欄位] int IDENTITY (1,1) PRIMARY KEY ,
[欄位1] nVarChar(50) default '默認值' null ,
[欄位2] ntext null ,
[欄位3] datetime,
[欄位4] money null ,
[欄位5] int default 0,
[欄位6] Decimal (12,4) default 0,
[欄位7] image null ,
)
刪除表:
Drop table [表名]
插入數據:
INSERT INTO [表名] (欄位1,欄位2) VALUES (100,'51WINDOWS.NET')
刪除數據:
DELETE FROM [表名] WHERE [欄位名]>100
更新數據:
UPDATE [表名] SET [欄位1] = 200,[欄位2] = '51WINDOWS.NET' WHERE [欄位三] = 'HAIWA'
新增欄位:
ALTER TABLE [表名] ADD [欄位名] NVARCHAR (50) NULL
刪除欄位:
ALTER TABLE [表名] DROP COLUMN [欄位名]
修改欄位:
ALTER TABLE [表名] ALTER COLUMN [欄位名] NVARCHAR (50) NULL
重命名表:(Access 重命名表,請參考文章:在Access資料庫中重命名表)
sp_rename '表名', '新表名', 'OBJECT'
新建約束:
ALTER TABLE [表名] ADD CONSTRAINT 約束名 CHECK ([約束欄位] <= '2000-1-1')
刪除約束:
ALTER TABLE [表名] DROP CONSTRAINT 約束名
新建默認值
ALTER TABLE [表名] ADD CONSTRAINT 默認值名 DEFAULT '51WINDOWS.NET' FOR [欄位名]
刪除默認值
ALTER TABLE [表名] DROP CONSTRAINT 默認值名
刪除Sql Server 中的日誌,減小資料庫文件大小
mp transaction 資料庫名 with no_log
backup log 資料庫名 with no_log
dbcc shrinkdatabase(資料庫名)
exec sp_dboption '資料庫名', 'autoshrink', 'true'
下面是2種語言的區別!
SQL和ACCESS基本都相同,可以直接導入導出,如果是程序訪問的話,sql語句有些不同,需要改動一下。
1、對於日期欄位
access表示為:#1981-28-12#
SQLSERVER2000表示為:'1981-02-12'
2、SQL語句區別
select、update 在對單表操作時都差不多,但多表操作時update語句的區別ACCESS與SQLSERVER中的Update語句對比:
SQLSERVER中更新多表的Update語句:Update Tab1 SET a.Name = b.Name FROM Tab1 a,Tab2 b Where a.ID = b.ID;
同樣功能的SQL語句在ACCESS中應該是:Update Tab1 a,Tab2 b SET a.Name = b.Name Where a.ID = b.ID;
即ACCESS中的Update語句沒有FROM子句,所有引用的表都列在Update關鍵字後。更新單表時都為:Update table1 set ab='ss',cd=111 where ....
3、delete語句
access中刪除時用:delete * from table1 where a>2 即只要把select 語句里的select 換成delete就可以了。
sqlserve 中則為:delete from table1 where a>2 即沒有*號
4、as 後面的計算欄位區別
access中可以這樣:select a,sum(num) as s_num,s_num*num as all_s_num 即可以把AS後的欄位當作一個資料庫欄位參與計算。
sqlserver 中則為:select a,sum(num) as s_num,sum(num)*num as all_s_num 即不可以把AS後的欄位當作一個資料庫欄位參與計算。
5、[.]與[!]的區別
access中多表聯合查詢時:select tab1!a as tab1a,tab2!b tab2b from tab1,tab2 ,中間的AS可以不要。
sqlserve 中則:select tab1.a as tab1a,tab2.b tab2b from tab1,tab2 ,中間的AS可以不要。
6、聯合查詢時
access中多表聯合查詢:'select a,b from(select a,b from tab1 where a>3 union select c,d from tab2 ) group by a,b
sqlserve 中則'select a,b from(select a,b from tab1 where a>3 union select c,d from tab2 ) tmptable group by a,b
即要加一個虛的表tmptable,表名任意。
7、access升級到sqlserver時
可以用sqlserver的數據導入工具導入數據,但要做必要的處理。
access中的自動編號,不會自動轉換SQL中的自動編號,只能轉換為int型,要把它手工改成標識欄位,種子為1,把所有導入被sqlserver轉化成的以n開頭的欄位類型的n去掉,如nvarchar->varchar。把需要有秒類型的日期欄位改成datatime類型(SQL會把所有的日期開轉化成smalldatetime型)
8、true與1=1
access用where true表示條件為真。
sqlserver用where 1=1表示條件為真。
9、判斷欄位值為空的區別
普通空:Access和sql server一樣 where code is null 或 where code is nol null
條件空:Access:if([num] is null,0,[num]) 或 if([num] is null,[num1],[num])
SQLServer: isnull([num],0) 或 isnull([num],[num1])
10、SQL語句取子串的區別
access:MID(欄位,n1,[n2]),LEFT(欄位,n),RIGHT(欄位,n)
如:select left(cs1,4)+'-'+cs2 as cs3
SQLServer:SUBSTRING(e-xpression, start, length)
如:select substring(cs1, 1, 2) + substring(cs1, 4, 2) + '-' + cs2 as cs3
11、布爾類型的區別
access:用「是/否」表示
SQLServer:用「bit」表示