关闭

Access笔记

标签: SQLAccess
278人阅读 评论(0) 收藏 举报
分类:

1、日期字段与时间字段合并为日期时间字段及一些SQL语句


alter table GasDataTable add 字段1 int			--增加一列int型字段1
alter table GasDataTable alter column 字段1 DateTime	--字段1的类型转为DateTime
update GasDataTable set 字段1=format(CDate(测量日期&' '&测量时间),"yyyy-mm-dd hh:nn:ss")  --测量日期与测量时间合并到字段1里
--要注意合并的两项是否有可合并性。并且若出现用户占用提示需要将表关闭了(Access中执行SQL时)
alter table GasDataTable drop column 测量时间        --删除一列
create table TableName(姓名 varchar(20), 年龄 varchar(20), QQ varchar(20))	--创建表
insert into TableName(姓名, 年龄, QQ) values ('ZL', '20', '1111111117')		--增加数据
delete from TableName where 姓名 not in('ZL')		--删除姓名列不是ZL的
update TableName set 姓名 = 'ZhLe' where 姓名 = 'ZL'	--把原来叫ZL的改为ZhLe
select * from TableName where 姓名 like '赵%'		--查找数据(%为多字符(Access软件里要用*),?为一个字符)
delete from GasDataTable where ID=1			--根据ID删除一行
delete from (select * from (select * from GasDataTable where TimeValue(日期时间) between #02:00:00# and #04:00:00#) where DateValue(日期时间) between #2013-10-01# and #2013-10-10#) --删除日期从#2013-10-01 - 2013-10-10#并且时间从#02:00:00 -  04:00:00#的数据,这种写法通过TimeValue与DateValue来定类型,所以日期时间字段为短文本的也可以选择出来。必须注意其与下面一句的区别
delete from (select * from GasDataTable where 日期时间 between #2013/10/1 2:00:00# and #2013/10/10 4:00:00#)	--删除日期时间栏从#2013-10-01 02:00:00#到#2013-10-10 04:00:00#的数据,注意日期时间栏必须为Date/Time类型,否则无法达到效果
select count(*) from GasDataTable where 备注		--计算备注列有值的个数
select count(备注) from GasDataTable			--计算备注列有值的个数
select count(*) from GasDataTable where 备注 = "123"	--计算备注列有"123"值的个数
select distinct 仪器编号 from GasDataTable		--选择仪器编号字段的不重复数据
select distinct 管道编号 from GasDataTable where 管道编号 like '??-0013'	--选择管道编号字段里适合通配符的数据,一个问号是一个字符
select * from GasDataTable where (left(管道编号,2)='03')	--筛选管道编号字段从左侧起为03的数据
select * from GasDataTable where 日期时间 between #2013-10-1 02:00# and #2013-10-10 04:00#  and 仪器编号 = 100841 and 管道编号 like '03-*'
select * from GasDataTable where 日期时间 between #2013/10/1 2:00:00# and #2013/10/10 4:00:00# and 仪器编号=100841 and 管道编号='00-0210'
select * from GasDataTable where 测量日期 = #2013/10/11#	--选择测量日期为2013/10/11的数据
"update GasDataTable set 管道转换=管道编号"			--列复制
update GasDataTable set 管道编号='B'& mid(管道编号,4) where (left(管道编号,2)='03')  --根据管道编号字段的前两位来将其更改为相应的编号。比如'03-1234'就改为'B1234'。mid(管道编号,4)是保留从第四位开始往后的字符串。
update GasDataTable set 管道编号='G'& CStr(CDbl(mid(管道编号,4))) where (left(管道编号,2)='11')		--跟上面相类似,CStr(CDbl(mid(管道编号,4)))是把从第四位往后的字符串先转换数字,再转换为字符串。(也可以不转为字符串直接与‘G’相连)
select min(日期时间) from GasDataTable				--选择日期时间字段的最小值
update GasDataTable set 管道编号='D'&  CDbl(mid(管道编号,5)) & '-' & right(left(管道编号,2),1) & right(left(管道编号,4),1) where (left(管道编号,1)='0')
select avg(CH4) from GasDataTable				--求字段的平均值
select stdev(CH4) from GasDataTable				--求字段的标准差
select last(CH4) from GasDataTable				--求字段的最后一个值
select max(CH4) from GasDataTable				--求字段的最值
alter table GasDataTable alter column ID counter(10,1)		--ID字段为自增字段,初始值为10,步长为1(执行它之前,如果字段类型已经是自增字段了,那么必须先将此字段改为其它类型,比如int,然后再执行此sql。否则将出现"无效字段类型")
select * from SourceDataTable where 仪器编号 is null		--选择仪器编号字段某个数据为空的数据行
select * into a from b						--复制表b到表a
drop table GasDataTable						--删除GasDataTable表



2、Access sql语句创建表及字段类型(转)

创建一张空表: Sql="Create TABLE [表名]"

创建一张有字段的表: Sql="Create TABLE [表名]([字段名1] MEMO NOT NULL, [字段名2] MEMO, [字段名3] COUNTER NOT NULL, [字段名4] DATETIME, [字段名5] TEXT(200), [字段名6] TEXT(200))

字段类型:   

2 : "SmallInt",                 // 整型    
3 : "Int",                 // 长整型    
4 : "Real",                 // 单精度型    
5 : "Float",                 // 双精度型    
6 : "Money",                 // 货币    
7 : "DateTime",                 // 日期时间 
11 : "Bit",                 // 是否 
13 : "TimeStamp", 
17 : "TinyInt",                 // 字节 
72 : "UniqueIdentifier",         // 同步复制 ID 
128 : "Binary", 
129 : "Char", 
130 : "NChar", 
131 : "Decimal",                 // 小数 
133 : "DateTime", 
135 : "SmallDateTime", 
200 : "VarChar", 
201 : "Text", 
202 : "VarChar",                 // 文本 
203 : "Text",                 // 备注 
204 : "Binary",                 // 二进制 
205 : "Image"                 // OLE 对象

以下字段为无编码字段(NChar、NVarchar、NText型) 8,128,130,202,203,204,205 以下字段为按当前系统内码编码的字段(Asp中可用CodePage=936纠正为gb2312内码) 129,200,201

在现有的表中增加字段: 
Sql="alter table [表名] add column [字段名] varchar(200)"

修改字段类型: 
Sql="alter table [表名] Alter COLUMN 字段名]   varchar(50)"

删除表: 
Sql="Drop table [表名]"

删除字段: 
sql="alter table [表名] drop [字段名]"

修改字段:
Alter TABLE [表名] Alter COLUMN [字段名] 类型(大小) NULL

新建约束:
Alter TABLE [表名] ADD CONSTRAINT 约束名 CHECK ([约束字段] <= '2007-1-1')

删除约束:
Alter TABLE [表名] Drop CONSTRAINT 约束名

新建默认值:
Alter TABLE [表名] ADD CONSTRAINT 默认值名 DEFAULT 'Gziu.CoM' FOR [字段名]

删除默认值:
Alter TABLE [表名] Drop CONSTRAINT 默认值名

=======================================

conn.open connstr sql="alter table [tablename] add hehe char(20)" conn.execute(sql) response.write("添加成功")

ACCESS新建数据库和表还不简单,有了表字段初始化就更简单

=======================================

<% 
session("tablen")="news" 
'news是已存在的表名 
session("fieldsn")="c" 
'要添加的字段名
connectionstring="provider=microsoft.jet.oledb.4.0;data source="&server.MapPath("data/qq.mdb") 
set conn=server.createobject("adodb.connection") 
conn.OPEN connectionstring 
jhsql = " Alter Table "&session("tablen")&" add column "&session("fieldsn")&" real " 
conn.execute(jhsql)
%>

================================

生成数据表,添加字段,其中id字段为自动增加,测试通过~~

Sub GenAutoIncrementFld() 
set cn=server.CreateObject("ADODB.Connection") 
set clx=server.CreateObject("ADOX.Column") 
set cat=server.CreateObject("ADOX.Catalog") 
set tblnam=server.CreateObject("ADOX.Table")

cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\网站制作\asp操作mdb\db\test.mdb"      
Set cat.ActiveConnection = cn

 

tblnam.Name = "Test"      
clx.ParentCatalog = cat

   
clx.Type = 3      
clx.Name = "Id"     
clx.Properties("AutoIncrement") = true      
tblnam.Columns.Append clx      
tblnam.Columns.Append "DataField",130,20      
cat.Tables.Append tblnam

     Set clx = Nothing
     Set cat = Nothing
     cn.Close
     Set cn = Nothing End Sub

call GenAutoIncrementFld

===================================

字段类型对应数值

''---- DataTypeEnum Values ---- 
Const adEmpty = 0
Const adTinyInt = 16
Const adSmallInt = 2
Const adInteger = 3
Const adBigInt = 20
Const adUnsignedTinyInt = 17
Const adUnsignedSmallInt = 18
Const adUnsignedInt = 19
Const adUnsignedBigInt = 21
Const adSingle = 4
Const adDouble = 5
Const adCurrency = 6
Const adDecimal = 14
Const adNumeric = 131
Const adBoolean = 11
Const adError = 10
Const adUserDefined = 132
Const adVariant = 12
Const adIDispatch = 9
Const adIUnknown = 13
Const adGUID = 72
Const adDate = 7
Const adDBDate = 133 
Const adDBTime = 134
Const adDBTimeStamp = 135
Const adBSTR = 8
Const adChar = 129
Const adVarChar = 200
Const adLongVarChar = 201
Const adWChar = 130
Const adVarWChar = 202
Const adLongVarWChar = 203
Const adBinary = 128
Const adVarBinary = 204
Const adLongVarBinary = 205
Const adChapter = 136
Const adFileTime = 64
Const adPropVariant = 138
Const adVarNumeric = 139
Const adArray = &H2000



97-2003版本

EXCEL

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=文件位置;Extended Properties=Excel 8.0;HDR=Yes;IMEX=1

ACCESS

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=文件位置;Jet OLEDB:Database Password=密码;

2007版本

EXCEL

Provider=Microsoft.Ace.OleDb.12.0;Data Source=文件位置;Extended Properties=Excel 12.0;HDR=Yes;IMEX=1

ACCESS

Provider=Microsoft.Ace.OleDb.12.0;Data Source=文件位置;Jet OLEDB:Database Password=密码;

【其他说明】

HDR=Yes/NO 表示是否将首行做标题。

IMEX 表示是否强制转换为文本

特别注意

Extended Properties='Excel 8.0;HDR=yes;IMEX=1'

A: HDR ( HeaDer Row )设置

若指定值为Yes,代表 Excel 档中的工作表第一行是栏位名称

若指定值為 No,代表 Excel 档中的工作表第一行就是資料了,沒有栏位名称

B:IMEX ( IMport EXport mode )设置

IMEX 有三种模式,各自引起的读写行为也不同,容後再述:

0 is Export mode

1 is Import mode

2 is Linked mode (full update capabilities)

我这里特别要说明的就是 IMEX 参数了,因为不同的模式代表著不同的读写行为:

当 IMEX=0 时为“汇出模式”,这个模式开启的 Excel 档案只能用来做“写入”用途。

当 IMEX=1 时为“汇入模式”,这个模式开启的 Excel 档案只能用来做“读取”用途。

当 IMEX=2 时为“连結模式”,这个模式开启的 Excel 档案可同时支援“读取”与“写入”用途。


DataTable的数据批量写入数据库

最近在将excel中的文件导入到数据库中,用程序进行编写,由于数据量较大所以速度很慢,后来采用了SqlBulkCopy类,解决了速度的问题,我就insert语句,sqldataadapter.update(dataset,tablename);sqlbulkcopy.WriteToServer(datatable);三个方法的性能进行比较:

1、生成测试的datatable表,表结构如下

UniqueID(主键,自动增长)  |  CompanyName  |  CompanyCode  |  Address  |  Owner  |  Memo

共6个字段。

 SqlConnection sqlconnection = new SqlConnection(connectionString);
 SqlDataAdapter sqldataadapter = new SqlDataAdapter("select * from Table_1 where 1=2", sqlconnection);
 DataSet dataset = new DataSet();
 sqldataadapter.Fill(dataset, "Table_1");
 DataTable datatable = dataset.Tables[0];
  //生成20000条记录

  for (int i = 0; i < 20000; i++)
  {
          DataRow datarow = datatable.NewRow();
          datarow["CompanyName"] = "companyname"+string.Format("{0:0000}",i);
          datarow["CompanyCode"] = "companycode" + string.Format("{0:0000}", i);
          datarow["Address"] = "address" + string.Format("{0:0000}", i);
          datarow["Owner"] = "owner" + string.Format("{0:0000}", i);
          datarow["Memo"] = "memo" + string.Format("{0:0000}", i);

          datatable.Rows.Add(datarow); 
  }

 

2、使用sqlcommand.executenonquery()方法插入

foreach (DataRow datarow in datatable.Rows)
{
string sql = "INSERT INTO [Table_1]

([CompanyName],[CompanyCode],[Address],[Owner],[Memo])" +
"VALUES('" + datarow["CompanyName"].ToString() + "'" +
",'" + datarow["CompanyCode"].ToString() + "'" +
",'" + datarow["Address"].ToString() + "'" +
",'" + datarow["Owner"].ToString() + "'" +
",'" + datarow["Memo"].ToString() + "')";
  using (SqlConnection sqlconn = new SqlConnection(connectionString))
  {
      sqlconn.Open();

      SqlCommand sqlcommand = new SqlCommand(sql, sqlconn);
      sqlcommand.ExecuteNonQuery();
      sqlconn.Close();
  }
}

插入20000条记录时间:00:00:29.7336000

 

3、使用sqldataadapter.update(dataset,tablename);

SqlCommand insertcommand = new SqlCommand("INSERT INTO [Table_1]([CompanyName],[CompanyCode],[Address],[Owner],[Memo])" +
 "VALUES(@CompanyName, @CompanyCode,@Address,@Owner,@Memo)",new SqlConnection(connectionString));
 insertcommand.Parameters.Add("@CompanyName", SqlDbType.NChar, 50, "CompanyName");
 insertcommand.Parameters.Add("@CompanyCode", SqlDbType.NChar, 25, "CompanyCode");
insertcommand.Parameters.Add("@Address", SqlDbType.NChar, 255, "Address");
insertcommand.Parameters.Add("@Owner", SqlDbType.NChar, 25, "Owner");
insertcommand.Parameters.Add("@Memo", SqlDbType.NChar, 255, "Memo");
sqldataadapter.InsertCommand = insertcommand;

sqldataadapter.Update(dataset, "Table_1");   

 

插入20000条记录时间:00:00:22.8938000

 

4、使用sqlbulkcopy.writetoserver(datatable)

SqlBulkCopy sqlbulkcopy = new SqlBulkCopy(connectionString, SqlBulkCopyOptions.UseInternalTransaction);
sqlbulkcopy.DestinationTableName = "Table_1";//数据库中的表名

sqlbulkcopy.WriteToServer(dataset.Tables[0]);

 

插入20000条记录时间:00:00:00.3276000

 

所以说速度是sqlbulkcopy最快,sqldataadapter.update()次之,sqlcommand.ExecuteNonQuery()最慢。

 

测试结果


但是,

BulkCopy 是 SQL Server 2005 的內建元件,而不是 .NET Framework 本身的 .
SqlBulkCopy 是呼叫 SQL Server 的 bcp 工具而發展的類別,但 Access 沒這種東西 .


 

C#中的各种Access操纵总结


新建表:
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,'abc.NET')

删除数据:
DELETE FROM [表名] WHERE [字段名]>100

更新数据:
UPDATE [表名] SET [字段1] = 200,[字段2] = 'abc.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 'abc.NET' FOR [字段名]

删除默认值
ALTER TABLE [表名] DROP CONSTRAINT 默认值名

  

-------------------------------------------------------------------------------

关于Access表的重命名:

数据量不大的时候可以选择:

select * into newtable name from oldTable;

drop table oldTableName;

 

--------------------------------------------------------------------

数据类型

access数据类型大全

ALTER TABLE tb ALTER 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 日期/时间

ALTER TABLE tb ALTER COLUMN aa bit 是否

-------------------------------------

C#将excel导入Access

首先将excel导出到Datatable

  string excelConnectionStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + this.tbExcelPath.Text + 
                ";Extended Properties='Excel 8.0;HDR=YES;IMEX=1; '";
            string query = "SELECT   *   FROM   ["+this.cbSheetName.SelectedItem.ToString()+"$]";
            OleDbCommand oleCommand = new OleDbCommand(query, new OleDbConnection(excelConnectionStr));
            OleDbDataAdapter oleAdapter = new OleDbDataAdapter(oleCommand);
            DataSet myDataSet = new DataSet();
            try
            {
                oleAdapter.Fill(myDataSet, this.tbNewDBTableName.Text);  
            }
            catch (Exception exx)
            {
                MessageBox.Show(exx.Message);
            }
            myDataSet.Tables[0].TableName = this.tbNewDBTableName.Text;

C# 将Dataset或者DataTable导入Access

先将dataset或者datatable导出为xml,再导入,如果有需要 自行增加主键.

 

            String strXML  = Environment.GetEnvironmentVariable("Temp") + "//xmldata.xml/";
            myDataSet.WriteXml(strXML,XmlWriteMode.WriteSchema);
                Microsoft.Office.Interop.Access.Application accessApp = new Microsoft.Office.Interop.Access.ApplicationClass();
                accessApp.OpenCurrentDatabase(this.tbDatabasePath.Text, false, "");
                accessApp.ImportXML(strXML, AcImportXMLOption.acStructureAndData);
                accessApp.CloseCurrentDatabase();

                accessApp.Quit(AcQuitOption.acQuitSaveAll);
                System.Runtime.InteropServices.Marshal.ReleaseComObject(accessApp);
                accessApp=null;
                GC.Collect();
                System.IO.File.Delete(strXML);

 

-------------------------------------------------------------------------

将dataset或者datatable保存到表中:

先删除,再添加:

 

            OleDbConnection oleConn = new OleDbConnection(connectStr);
            String sql = "delete from " + curModelName + " where ID >0";
            OleDbCommand cmd = new OleDbCommand(sql, oleConn);
            try
            {
                if (oleConn.State != ConnectionState.Open)
                {
                    oleConn.Open(); 
                }
                
                cmd.ExecuteNonQuery();
                for (i = 0; i < dt.Rows.Count; i++)
                {
                    sql = "insert into " + curModelName + " (指标层,权值) values ('" + dt.Rows[i][0].ToString() + "'," + dt.Rows[i][1].ToString() + ")";
                    cmd = new OleDbCommand(sql, oleConn);
                    cmd.ExecuteNonQuery();
                }
            catch (Exception ee)
            {
                MessageBox.Show("保存到数据库时出错,错误信息为:" + ee.Message);
            }
            finally
            {
                if (oleConn.State == ConnectionState.Open)
                {
                    oleConn.Close();
                }
            }


标题:WPF引入WindowsForms控件示例
作者:kagula
日期:2012-4-5

环境:

[1]WindowsXP with SP3

[2]VS2008 with SP1

正文
Step1:在现有工程中引入Windows Forms
 鼠标右键[References]->选择[Add Reference]->[.NET]标签页
 加入[WindowsFormsIntegration]和[System.Windows.Forms]两项

Step2:在XAML文件里加入
[S2-1]加入namespace引用
    xmlns:wf="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms"
    xmlns:wfi="clr-namespace:System.Windows.Forms.Integration;assembly=WindowsFormsIntegration"
[S2-2]加入Windows Forms控件

[html] view plaincopy
  1. <wfi:WindowsFormsHost Name="winFormsContainer"  Grid.Row="2" Margin="0,5,0,0">  
  2.   <wf:ListView x:Name="listView1" Margin="0,2,0,0" Name="listView1"/>  
  3. </wfi:WindowsFormsHost>  


Step3:在CS代码里面操作WindowsForms控件

[csharp] view plaincopy
  1. Icon icon = new Icon(@"driver.ico");  
  2. System.Windows.Forms.ImageList imageList2 = new System.Windows.Forms.ImageList();  
  3. imageList2.Images.Add(icon);  
  4. listView1.SmallImageList = imageList2;  

 





一、Access从Excel中导入数据

1.用到的Excel表的格式及内容

[c-sharp] view plaincopy
  1. OleDbConnection con = new OleDbConnection();  
  2.             try  
  3.             {  
  4.                 OpenFileDialog openFile = new OpenFileDialog();//打开文件对话框。  
  5.                 openFile.Filter = ("Excel 文件(*.xls)|*.xls");//后缀名。  
  6.                 if (openFile.ShowDialog() == DialogResult.OK)  
  7.                 {  
  8.                     string filename = openFile.FileName;  
  9.                     int index = filename.LastIndexOf("//");//截取文件的名字  
  10.                     filename = filename.Substring(index + 1);  
  11.                     conExcel.ConnectionString = "Provider=Microsoft.Jet.Oledb.4.0;Data Source=" +   
  12.                                                 Application.StartupPath + "//Appdata.mdb";  
  13.                     //将excel导入access  
  14.                     //distinct :删除excel重复的行.  
  15.                     //[excel名].[sheet名] 已有的excel的表要加$  
  16.                     //where not in : 插入不重复的记录。  
  17.                       
  18.                     string sql = "insert into Users2(用户编号,用户姓名) select distinct * from [Excel 8.0;database=" +  
  19.                                 filename + "].[name$] where 用户编号 not in (select 用户编号 from Users2) ";  
  20.                     OleDbCommand com = new OleDbCommand(sql, con);  
  21.                     con.Open();  
  22.                     com.ExecuteNonQuery();  
  23.                     MessageBox.Show("导入数据成功""导入数据", MessageBoxButtons.OK, MessageBoxIcon.Information);  
  24.                 }  
  25.             }  
  26.             catch (Exception ex)  
  27.             {  
  28.                 MessageBox.Show(ex.ToString());  
  29.             }  
  30.             finally  
  31.             {  
  32.                 con.Close();  
  33.             }  

 

二、Access导出Excel

[c-sharp] view plaincopy
  1. OleDbConnection con = new OleDbConnection();  
  2.             try  
  3.             {  
  4.                 SaveFileDialog saveFile = new SaveFileDialog();  
  5.                 saveFile.Filter = ("Excel 文件(*.xls)|*.xls");//指定文件后缀名为Excel 文件。  
  6.                 if (saveFile.ShowDialog() == DialogResult.OK)  
  7.                 {  
  8.                     string filename = saveFile.FileName;  
  9.                     if (System.IO.File.Exists(filename))  
  10.                     {  
  11.                         System.IO.File.Delete(filename);//如果文件存在删除文件。  
  12.                     }  
  13.                     int index = filename.LastIndexOf("//");//获取最后一个/的索引  
  14.                     filename = filename.Substring(index + 1);//获取excel名称(新建表的路径相对于SaveFileDialog的路径)  
  15.                     //select * into 建立 新的表。  
  16.                     //[[Excel 8.0;database= excel名].[sheet名] 如果是新建sheet表不能加$,如果向sheet里插入数据要加$.   
  17.                     //sheet最多存储65535条数据。  
  18.                     string sql = "select top 65535 *  into   [Excel 8.0;database=" + filename + "].[用户信息] from Users2";  
  19.                     con.ConnectionString = "Provider=Microsoft.Jet.Oledb.4.0;Data Source=" + Application.StartupPath + "//Appdata.mdb";//将数据库放到debug目录下。  
  20.                     OleDbCommand com = new OleDbCommand(sql, con);  
  21.                     con.Open();  
  22.                     com.ExecuteNonQuery();  
  23.   
  24.                     MessageBox.Show("导出数据成功""导出数据", MessageBoxButtons.OK, MessageBoxIcon.Information);  
  25.                 }  
  26.             }  
  27.             catch (Exception ex)  
  28.             {  
  29.                 MessageBox.Show(ex.ToString());  
  30.             }  
  31.             finally  
  32.             {  
  33.                 con.Close();  
  34.             }  

 


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:30730次
    • 积分:478
    • 等级:
    • 排名:千里之外
    • 原创:18篇
    • 转载:11篇
    • 译文:1篇
    • 评论:7条
    最新评论