连接Excel数据库
SQL语法:http://www.w3school.com.cn/sql/sql_syntax.asp
Ctrl键拖(也就是复制)
先输入1,2,然后下拉
一、问题的提出
在ASP编程中会遇到很多大大小小的难题,我有一次为一家书店设计网站的时候就遇到了一个这样的难题。起初使用Access做数据库,该数据库主要是为了保存书店内图书的信息,但是当记录的条目过多时数据库的体积将会变得很大。在实际的应用中,网站的空间是有限的,很多要建设网站的客户都没有自己的主机,网站的空间是向网站空间提供商花钱购买而来的,这就要求在网站空间一定的条件下,尽量减小网站内文件的体积。于是我选择了Excel做数据库。
二、方法与说明
将Excel文件(例如book.xls)看成一个数据库,其中的每一个工作表(sheet)看成数据库表。假设Excel中的第一行为字段名,所以你定义的范围中必须要包括第一行的内容。
Excel中的行标题(即字段名)不能够包含数字。Excel的驱动在遇到这种问题时就会出错(例如你的行标题名为“F1”)。如果你的Excel中某一列同时包含了文本和数字的话,那么Excel的ODBC驱动将不能够正常处理这一行的数据,你必须要保证该列的数据类型一致。
使用Excel做数据库在添加数据的时候可以在本地机上使用Microsoft Excel进行编辑。书商们在做图书数据的时候往往都是从各大出版社下载所需的图书信息,这些图书信息都有固定的格式,书商把下载的数据通过复制、粘贴等方法大批量的添加到Excel数据库中。做好数据后将Excel数据库上传到网站。这种方法有以下优点:快速、方便和易操作。
访问数据库信息的第一步是和数据库源建立连接。
-----------------------------------------------------------------转载---------------------------------------------------------------------------------------
C语言连接:
下载CSpreadSheet.h文件在CodeProject!
使用介绍:http://www.oschina.net/question/76782_12420
基本用例:http://zhidao.baidu.com/link?url=g5Pg1IxCHOzL8Uuwcnq2LhfvEpBKQ4ySudk-JefNkNJB340S_b_5NGOIe-X168K0Yf1pIoA0LTyntihPb5xO8K
java连接(动态构造连接字符串):
- String url="jdbc:odbc:Driver=Microsoft Excel Driver (*.xls);DBQ=C:/Users/dajun/Desktop/EXcel/book.xls";
- Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//通过sun.jdbc.odbc.JdbcOdbcDriver来获取数据
- Connection conn = DriverManager.getConnection(url);
- Statement sta = conn.createStatement();
- ResultSet rs = sta.executeQuery("Select * from [Sheet" + 1 + "$]");
- ResultSetMetaData rsmeta = rs.getMetaData();
- int numberOfColumns = rsmeta.getColumnCount();
- while (rs.next())
- {
- for(int i = 1; i <= numberOfColumns; i++)
- {
- System.out.print(rs.getString(i));
- }
- }
- rs.close();
- sta.close();
- conn.close();
- }
插入操作:
遇到的问题
- java.sql.SQLException: [Microsoft][ODBC Excel 驱动程序] 操作必须使用一个可更新的查询。
- at sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown Source)
- package odbcj;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.ResultSet;
- import java.sql.ResultSetMetaData;
- import java.sql.Statement;
- public class ads {
- public static void main(String[] argv) {
- try {
- String url = "jdbc:odbc:Driver=Microsoft Excel Driver (*.xls);DBQ=C:/Users/dajun/Desktop/EXcel/book.xls;ReadOnly=0";
- Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
- Connection conn = DriverManager.getConnection(url);
- Statement sta = conn.createStatement();
- //ResultSet rs = sta.executeQuery("Select * from [Sheet" + 1 + "$]");
- //ResultSetMetaData rsmeta = rs.getMetaData();
- //int numberOfColumns = rsmeta.getColumnCount();
- /*while (rs.next()) {
- for (int i = 1; i <= numberOfColumns; i++) {
- System.out.print(rs.getString(i). + " ");
- }
- System.out.print("\n");
- }*/
- int num = 550000;
- Statement sta1;
- String st;
- //System.out.println(st);
- //String sql="insert into [Sheet1$](name1,name2)values('test1','test2')";
- //sta.execute(sql);
- for(int i=0;i<10; i++)
- sta.execute("insert into [Sheet1$](序号) values("+(num++)+")");
- //System.out.println(num);
- //rs.close();
- sta.close();
- conn.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
更新操作:
http://blog.csdn.net/ylnjust02/article/details/548928
1.INSERT INTO SELECT语句
语句形式为:Insert into Table2(field1,field2,...) select value1,value2,... from Table1
要求目标表Table2必须存在,由于目标表Table2已经存在,所以我们除了插入源表Table1的字段外,还可以插入常
INSERT INTO SELECT语句复制表数据
Insert into Table2(a, c, d) select a,c,5 from Table1
2.SELECT INTO FROM语句
语句形式为:SELECT vale1, value2 into Table2 from Table1
要求目标表Table2不存在,因为在插入时会自动创建表Table2,并将Table1中指定字段数据复制到Table2中
select a,c INTO Table2 from Table1
asp编程(动态构造连接字符串):
- 查询并显示表Sheet1字段为书名的代码:
- <%
- Dim Conn,Driver,DBPath,Rs
- ' 建立Connection对象
- Set Conn = Server.CreateObject("ADODB.Connection")
- Driver = "Driver={Microsoft Excel Driver (*.xls)};"
- DBPath = "DBQ=" & Server.MapPath("book.xls")
- '调用Open 方法打开数据库
- Conn.Open Driver & DBPath
- 'DSN连接方式
- 'Conn.Open "Dsn=book"
- '注意 表名一定要以下边这种格试 "[表名$]" 书写
- Sql="Select * From [Sheet1$]"
- Set Rs=Conn.Execute(Sql)
- IF Rs.Eof And Rs.Bof Then
- Response.write "没有找到您需要的数据!!"
- Else
- Do While Not Rs.EOF
- Response.write Rs("书名")
- Response.write "<br>"
- Rs.MoveNext
- Loop
- End IF
- Rs.Close
- Set Rs=nothing
- Conn.Close
- Set Conn=Nothing
- %>
- 查询并显示表Sheet1全部内容的代码:
- <%
- Dim Conn,Driver,DBPath,Rs
- Set Conn = Server.CreateObject("ADODB.Connection")
- Driver = "Driver={Microsoft Excel Driver (*.xls)};"
- DBPath = "DBQ=" & Server.MapPath( "book.xls" )
- Conn.Open Driver & DBPath
- Set Rs = Server.CreateObject("ADODB.Recordset")
- Sql="select * from [Sheet1$]"
- Rs.Open Sql,conn,2,2
- %>
- <table border="1">
- <tr>
- <%
- for i=0 to Rs.Fields.Count-1
- %>
- <td bgcolor="#0099FF"><%=Rs(i).Name%></td>
- <%
- next
- %>
- </tr>
- <%
- do while Not Rs.EOF
- %>
- <tr>
- <%
- for i=0 to Rs.Fields.Count-1
- %>
- <td><%=Rs(i)%></td>
- <%
- next
- %>
- </tr>
- <%
- Rs.MoveNext
- Loop
- Rs.close
- set Rs=nothing
- Conn.close
- set Conn=nothing
- %>
- </table>
连接Excel数据库的更多相关文章
- JDBC-ODBC桥接方法连接Excel数据库的方法
通过JDBC-ODBC桥接器访问Excel电子表格 1.设置数据源 Excel数据源选择的驱动程序是Microsoft Excel Driver 2.选择表 与访问其他数据库不同的是,我们必须在电子表 ...
- 使用win8.1 x64 office2010 php 使用 pdo_odbc 连接excel失败的问题
public function init($filePath){ $dbq = iconv('UTF-8',"GBK",BASEPATH.'../'.$filePath); $ds ...
- Excel VBA 连接各种数据库(二) VBA连接Oracle数据库
本文主要内容: Oracle环境配置 ODBC驱动设置.第三方驱动下载 VBA连接Oracle连接方法 Oracle10g官方免账号下载地址 系统环境: Windows 7 64bit Excel 2 ...
- Excel VBA 连接各种数据库(一) VBA连接MySQL数据库
本文参考[东围居士]的cnblog博文 Excel.VBA与MySQL交互 在自己机器上调试成功,把调试中遇到的问题一并写出了. 本文主要涉及: VBA中的MySQL环境配置 VBA连接MySQL ...
- Excel VBA 连接各种数据库(三) VBA连接SQL Server数据库
本文主要涉及: VBA中的SQL Server环境配置 VBA连接SQL Server数据库 VBA读写SQL Server数据 如何安装SQL Client 系统环境: Windows 7 64bi ...
- 一起学微软Power BI系列-使用技巧(2)连接Excel数据源错误解决方法
上一篇文章一起学微软Power BI系列-使用技巧(1)连接Oracle与Mysql数据库中,我们介绍了Power BI Desktop中连接Oracle和Mysql的方法,其实说到底还是驱动的问题, ...
- java连接各种数据库代码大全
1.Oracle8/8i/9i数据库(thin模式)Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();S ...
- 一起学微软Power BI系列-使用技巧(6) 连接Sqlite数据库
好久没有研究Power BI了,看到高飞大神弄的东西,太惭愧了.今天有个小东西,数据在Sqlite里面,想倒腾到Power BI Desktop里面折腾一下,结果发现还不直接支持.所以只好硬着头皮上去 ...
- Delphi中使用ADO连接Excel
第一部分: . 设置ADOConnection的ConnectionString属性的OLE DB的提供者要选择Microsoft Jet 4.0 OLE DB Provider(这本来是用于连接Ac ...
随机推荐
- IEflash遇到flash遮挡
遇到IE中(包括IE6+)弹窗广告要flash遮挡的问题,后来想到了常用的iframe方法(参见<解决IE6 select z-index无效,遮挡div的bug>),最终成功了flash ...
- CodeForces - 13D :Triangles(向量法:问多少个蓝点三角形内部无红点)
Little Petya likes to draw. He drew N red and M blue points on the plane in such a way that no three ...
- facebook注册不了无法打开官网的解决办法
上周有一个朋友问到我一个问题,问怎么facebook注册不了,facebook官网也无法打开?这个问题不知道有没有人遇到过,以前这个问题也困扰了我挺长时间的,其实想想也挺简单的,由于facebook, ...
- 设置Nodejs NPM全局路径
Windows下的Nodejs npm路径是appdata 在nodejs的安装目录中找到node_modules\npm\.npmrc文件 修改如下即可: prefix = E:\nodejs\np ...
- 蓝桥杯 算法训练 ALGO-122 未名湖边的烦恼
算法训练 未名湖边的烦恼 时间限制:1.0s 内存限制:256.0MB 问题描述 每年冬天,北大未名湖上都是滑冰的好地方.北大体育组准备了许多冰鞋,可是人太多了,每天下午收工后,常常一双冰鞋都 ...
- linux指令 apt-grt指令使用
apt-get 是linux的一条指令,主流的linux版本Debian和ubuntu都使用apt-get来安装软件.那么,需安装的软件都放在哪里呢??? apt-get 利用软件安装源来安装软件,其 ...
- Java学习之数据的时间及热度属性
背景:在JAVA开发的电商网站中都有海量商品信息,绝大部分电商网站都有为了让用户尽快的获取到想要的商品提供流行商品和推荐商品的概念,我的理解是从两个方面反映了商品的时间维度和热度:流行商品是指横向所有 ...
- jackson 进行json与java对象转换 之二
主要用于测试学习用jackson包实现json.对象.Map之间的转换. 1.准备测试用的Java类 (1)Link类 package test; /** * Description: 联系方式,被u ...
- javascript——对象的基础知识
一.javascript作为脚本语言可以完成以下任务: 操纵浏览器对象,如窗口的打开与关闭: 操纵Dom树: 通过XMLHttpRequest对象与服务器端进行异步通信: XML编程,借助于Activ ...
- 部署和调优 1.1 nfs部署和优化-2
更改共享目录文件默认的所有者和所属组 已知道客户端有个user11用户 cat /etc/passwd user11:x:501:501::/home/user11:/bin/bash 服务端打开 v ...