‘壹’ 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”表示