未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序解决办法

作者: 傻猫    分类: 弄数据    发布时间: 11-12 09:54    浏览次数: 4462     无留言

本错误是由于你使用了ACCESS2007版本建立的数据库,但服务器中没有相配合使用的程序,所以出错.

未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序。

说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.InvalidOperationException: 未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序。

下载2007 Office system 驱动程序:数据连接组件安装

http://download.microsoft.com/download/7/0/3/703ffbcb-dc0c-4e19-b0da-1463960fdcdb/AccessDatabaseEngine.exe

此下载将安装一组组件,非 Microsoft Office 应用程序可以使用它们从 2007 Office system 文件中读取数据,
例如从 Microsoft Office Access 2007(mdb 和 accdb)文件以及 Microsoft Office Excel 2007(xls、xlsx 和 xlsb)文件中读取数据。这些组件还支持与 Microsoft Windows SharePoint Services 和文本文件建立连接。

此外,还会安装 ODBC 和 OLEDB 驱动程序,供应用程序开发人员在开发与 Office 文件格式连接的应用程序时使用。

查看更多内容...

mssql查询所有表和所有表记录数

作者: 傻猫    分类: 弄数据    发布时间: 04-09 08:27    浏览次数: 4359     无留言

SQL查询数据库表名、表的列名

作者: 傻猫    分类: 弄数据    发布时间: 12-16 15:24    浏览次数: 4677     无留言

关于多对多关系数据的比较算法

作者: 傻猫    分类: 弄数据    发布时间: 06-20 08:45    浏览次数: 4876     无留言

昨天搞了一个小软件,主要分析多对多关系的数据,刚开始一直没有想到办法,后来想到了通过数据库数据读取来循环操作,功能实现了,但是要读取数据库很多次,效率感觉不行,于是又重新想了想,用动态数组的方法来实现,不读写数据库,速度也很快,而且充分发挥了CS客户端的效率,可以交由客户端来完成一些事务处理,这个是BS无法比的,哈哈。现将demo分享一下。

1、两张表,一个是学生信息表UserInfo,一个学科信息Project表

UserInfo信息如下

id,  name, myProject
1    tom     1,2,3,4
2    jim      1,3
3   sam      2,4

Project信息如下

id,name
1    math
2    english
3   chinese
4   Japanese

 myProject字段信息记录学生的科目信息,现在是需要在listview列表里显示某个学生的科目信息,所学科目打钩。

1、首先将所有科目信息填充到listview,第一列为科目ID

2、取出某学生的学科信息myProject值temp

第一种实现方法,通过数据库循环操作:

      for i:=0 to lv_hdtc.Items.Count-1 do
      begin
             //通过数据循环操作获取相关信息
            mysql:='select id from Project  where id in ('+temp+')';
            with data do
            begin
                  qry_temp.Close;
                  qry_temp.SQL.Clear;
                  qry_temp.SQL.Add(mysql);
                  qry_temp.Open;
                  for j:=0 to qry_temp.RecordCount-1 do
                  begin
                        if Trim(qry_temp.fieldbyname('id').AsString)=lvtxt then
                        lv_hdtc.Items.Item[i].Checked:=True;

                        qry_temp.FindNext;
                  end;
            end;
                       
      end;

第二种实现方法,使用动态数组:

    //mytc: array of string;
     i:=0;
     SetLength(mytc,Length(temp));
     while True do
     begin
             if Pos(',',temp)>0 then
             begin
                  SplitString(temp,',',l,r);
                  mytc[i]:=Trim(l);
                  temp:=Trim(r);
                  i:=i+1;
             end
             else
             begin
                 if i=0 then
                 mytc[0]:=Trim(temp)
                 else
                 mytc[i]:=Trim(temp);
                
                 Break;
             end;
     end;


      for i:=0 to lv_hdtc.Items.Count-1 do
      begin
            //通过本地数组格式化进行操作
            lvtxt:=Trim(lv_hdtc.Items.Item[i].Caption);

            for j:=0 to Length(mytc)-1 do
            begin
                  if Trim(mytc[j])=lvtxt then
                  lv_hdtc.Items.Item[i].Checked:=True;
            end;
          
      end;

 

mysql笔记——mysql特点,常用命令,基本数据类型

作者: 傻猫    分类: 弄数据    发布时间: 03-01 21:34    浏览次数: 4948     无留言

1.MySQL数据库具有以下主要特点:

1. 同时访问数据库的用户数量不受限制;

2. 可以保存超过50,000,000条记录;

3. 是目前市场上现有产品中运行速度最快的数据库系统;

4. 用户权限设置简单、有效。

2.MySQL常用的命令:

help (\h) 显示命令帮助

(\h) 作用同上

clear (\c) 清除屏幕内容

connect (\r) 重新连接服务器,可选参数为 db(数据库)和 host(服务器)

exit (\) 退出mysql数据库,作用与quit命令相同

go (\g) 将命令传送至mysql数据库

print (\p) 打印当前命令

quit (\q) 退出mysql数据库

status (\s) 显示服务器当前信息

use (\u) 打开数据库,以数据库名称作为命令参数

注:mysql数据库要求使用者在所有命令后面加上“;”作为命令的结束。

3.MySQL数据类型:

1)char:用于表示固定长度的字符串,最多包含255个字符。

eg. car_model char(10);

2)varchar:用于保存可变长度的字符串,最多包含255个字符。对于那些难以估计确切长度的数据对象来说,使用VARCHAR数据类型更加明智。虽然VARCHAR使用起来较为灵活,但是从整个系统的性能角度来说,CHAR数据类型的处理速度更快,有时甚至可以超出VARCHAR处理速度的50%。

car_model VARCHAR(10);//最多包含10个字符

varchar类型的占用空间是它的值的实际长度+1,这个字节用于保存实际使用了多大的长度。

3) INT (M) [Unsigned]

  DECIMAL和NUMERIC,它们是同一种类型。它严格的说不是一种数字类型,因为他们实际上是将数字以字符串形式保存的;他的值的每一位(包括小数点)占一个字节的存储空间,因此这种类型耗费空间比较大。但是它的一个突出的优点是小数的位数固定,在运算中不会" 失真",所以比较适合用于"价格"、"金额"这样对精度要求不高但准确度要求非常高的字段。

整数类型。从只占一个字节存储空间的TINYINT到占8个字节的BIGINT,挑选一个"够用"并且占用存储空间 最小的类型是设计数据库时应该考虑的。TINYINT、SMALLINT、MEDIUMINT、INT和BIGINT占用存储空间分别为1字节、2字节、 3字节、4字节和8字节,就无符号的整数而言,这些类型能表示的最大整数分别为255、65535、16777215、4294967295和 18446744073709551615。如果用来保存用户的年龄(举例来说,数据库中保存年龄是不可取的),用TINYINT就够了;九城的《纵横》 里,各项技能值,用SMALLINT也够了;如果要用作一个肯定不会超过16000000行的表的AUTO_INCREMENT的IDENTIFY字段, 当然用 MEDIUMINT 不用 INT ,试想,每行节约一个字节,16000000行可以节约10兆多呢!

INT数据类型用于保存从- 2147483647 到2147483648范围之内的任意整数数据。如果用户使用Unsigned选项,则有效数据范围调整为0-4294967295。举例如下:

light_years INT;

  按照上述数据类型的设置,-24567为有效数据,而3000000000则因为超出了有效数据范围成为无效数据。

再例如:

light_years INT unsigned;

这时,3000000000成为有效数据,而-24567则成为无效数据。

4)float(M,D)

表示数值较小的浮点数据,可以提供更加准确的数据精度。其中,M代表浮点数据的长度(即小数点左右数据长度的总和),D表示浮点数据位于小数点右边的数值位数。

rainfall FLOAT (4,2);

  按照上述数据类型的设置,42.35为有效数据,而324.45和3.542则因为超过数据长度限制或者小数点右边位数大于规定值2成为无效数据。

5) DATE    分为:DATETIME、DATE、TIMESTAMP、TIME和YEAR

  DATE数据类型用于保存日期数据,默认格式为YYYY-MM-DD。MySQL提供了许多功能强大的日期格式化和操作命令,

the_data DATA ;

6) TEXT / BLOB

TEXT和BLOB数据类型可以用来保存255 到65535个字符,如果用户需要把大段文本保存到数据库内的话,可以选用TEXT或BLOB数据类型。TEXT和BLOB这两种数据类型基本相同,唯一的区别在于TEXT不区分大小写,而BLOB对字符的大小写敏感。

TINYTEXT最大长度为255,占用空间是实际长度+1,TEXT最大长度65535,占用空间是实际长度+2,MEDIUMTEXT最大长度16777215,占用空间实际长度+3,LONGTEXT最大长度4294967295,占用空间长度实际长度+4;

7)SET

  SET数据类型是多个数据值的组合,任何部分或全部数据值都是该数据类型的有效数据。SET数据类型最大可以包含64个指定数据值。

       transport set(“truck”,“car”)NOT NULL ;

根据上述数据类型的设置,truck,car,以及truck,car都可以成为transport的有效值。

8)ENUM

  ENUM数据类型和SET基本相同,唯一的区别在于ENUM只允许选择一个有效数据值。且最多可以定义65535种不同的字符串中作出选择,占用空间是一个或两个字节。例如:

transport ENUM ("truck", "wagon") NOT NULL;

  根据上述设置,truck或wagon将成为transport的有效数据值

mysql笔记(1)——varchar与char的区别

作者: 傻猫    分类: 弄数据    发布时间: 03-01 20:54    浏览次数: 5721     无留言

用了这么多年数据库,varchar和char都在使用,只知道两者都是字符串类型,两者的长度不一样,其实长度是一样的,最大为255个字符,最大的区别在于char用于固定长度的字符串,varchar用于可变长度的字符串,char数据类型处理速度更快,最高可以超出varchar处理速度的50%。

-----------------------以下内容为MYSQL varchar与char的区别--------------------------------

char:用于表示固定长度的字符串,最多包含255个字符。

car_model char(10);

varchar:用于保存可变长度的字符串,最多包含255个字符。对于那些难以估计确切长度的数据对象来说,使用VARCHAR数据类型更加明智。虽然VARCHAR使用起来较为灵活,但是从整个系统的性能角度来说,CHAR数据类型的处理速度更快,有时甚至可以超出VARCHAR处理速度的50%。

car_model VARCHAR(10);  //最多包含10个字符

varchar类型的占用空间是它的值的实际长度+1,这个字节用于保存实际使用了多大的长度。

-----------------------以下内容为MSSQL varchar、nvarchar与char的区别--------------------------------

字符串数据类型:char、varchar、nvarchar 这三种都是我们常用的数据类型;
varchar与nvarchar比较相似,主要区别在于字符存储字节不同,所以先区分与char的区别:

1、char  固定长度,最长为2000个字符。比如char(50),就算你只存储一个字符,数据库也要为它分配50个字符的空间,这种类型在访问速度上优于varchar,nvarchar,也就是我们常说的空间换时间,经常需要修改更新,且长度不一的字段可以用char。
2、varchar、nvarchar 可变长度字符串。比如varchar(50),你定义的只是最长字符长度为50,实际数据库分配空间根据实际储存字符串长度决定。

3、varchar与nvarchar的区别,主要区别是存储方式不同:
      varchar:按字节存储,比如:varchar(50)可以存储50个英文字母或数字,但只能存储25个汉字,因为汉字是双字节的。
      nvarchar:按字符存储,每字符占2个字节。比如nvarchar(50)不管存储英文字母还是中文汉字都能存储50个字符,存储50个字符时它需要分配100个字节的空间。

     varchar可变长度,最长为8000个字符。适合存储英文数字字符串,如密码。
     nvarchar可变长充,最长为4000个字符。适合存储中英文混合的名称字段,如登录的用户名。

 

如何用MDF文件恢复数据库

作者: 傻猫    分类: 搞软件     发布时间: 11-15 15:06    浏览次数: 5528     无留言

由于种种原因,我们如果当时仅仅备份了mdf文件,那么恢复起来就是一件很麻烦的事情了。
    如果您的mdf文件是当前数据库产生的,那么很侥幸,也许你使用sp_attach_db或者sp_attach_single_file_db可以恢复数据库,但是会出现类似下面的提示信息
    设备激活错误。

    物理文件名 'C:\Program Files\Microsoft SQL Server\MSSQL\data\test_Log.LDF' 可能有误。
    已创建名为 'C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_log.LDF' 的新日志文件。

 

查看更多内容...

mssql 2008维护计划创建失败的解决方法

作者: 傻猫    分类: 弄数据    发布时间: 08-03 21:23    浏览次数: 8649     无留言

今天在MSSQL2008创建维护计划时,报下面错误,始终建不起,在网上搜索一下,得到以下解决方法:

标题: 维护计划向导进度,创建维护计划失败。其他信息:

从 IClassFactory 为 CLSID 为 {17BCA6E8-A95D-497E-B2F9-AF6AA475916F} 的 COM 组件创建实例失败,原因是出现以下错误: c001f011。 (Microsoft.SqlServer.ManagedDTS)------------------------------

从 IClassFactory 为 CLSID 为 {17BCA6E8-A95D-497E-B2F9-AF6AA475916F} 的 COM 组件创建实例失败,原因是出现以下错误: c001f011。 (Microsoft.SqlServer.ManagedDTS)

解决方法:

在命令行执行:regsvr32    “c:\Program Files\MicrosoftSQL Server\100\DTS\Binn\dts.dll”

将dts.dll重新注册一次,然后重新打开管理器,再进行创建维护计划,搞定。

 

Android 使用Sqlite管理数据库

作者: 傻猫    分类: 搞软件     发布时间: 07-09 11:14    浏览次数: 4779     无留言

一般在开发程序中,经常使用数据的存储功能,如在使用Delphi开发程序时,存储程序的简单设置的INI文件,在C#开发中有时也需要存储简单的设置,个人一般存储在XML中,也在INI中存储过,但是不如XML使用方便,那么这些都是简单的数据存储功能,在Android中也支持这样的文件存储,但是现在这里主要说的还是使用SQLite存储数据,SQLite是一种跨平台的数据库,是单文件式的,如咱们平常见的最多的Access数据库,但是他有比Access更好的平台支持,并且支持分页,现在主要是用于嵌入式的开发。

查看更多内容...

自动备份数据库和删除历史备份

作者: 傻猫    分类: 搞软件     发布时间: 03-29 06:07    浏览次数: 6001     无留言

SQL SERVER 2005里自动备份数据库和删除旧有备份的办法 

打开SQL SERVER MANAGEMENT STUDIO,启动SQL SERVER代理服务(注意在“控制面板-管理工具-服务”中设置SQL SERVER AGENT的启动类型为自动)。

启动后点击“作业-新建作业”,弹出一个作业属性的窗口,在“常规”栏目 打开SQL SERVER MANAGEMENT STUDIO,启动SQL SERVER代理服务(注意在“控制面板-管理工具-服务”中设置SQL SERVER AGENT的启动类型为自动)。

启动后点击“作业-新建作业”,弹出一个作业属性的窗口,在“常规”栏目里可以先给作业命名,假设为“备份数据”。 

一、备份数据的第一个步骤--“备份当日数据”  在“步骤”栏目里新建一个步骤名为“备份当日数据”,类型为“T-SQL”,数据库选择你要操作的数据库(假设为“TESTDB”),命令窗口里填入备份的SQL语句。假设备份数据放在“D:\BACKUP”里,备份文件命名格式为“SQL-2009-3-26.BAK”,那么语句如下: 
DECLARE @filename VARCHAR(255)
DECLARE @date DATETIME 
SELECT @date=GETDATE() SELECT @filename = 'D:\BACKUP\SQL-'+CAST(DATEPART(yyyy,@date) as varchar)+'-'+CAST(DATEPART(mm,@date) as varchar)+'-'+CAST(DATEPART(dd,@date) as varchar)+'.bak' 
BACKUP DATABASE [TESTDB] TO DISK = @filename WITH INIT GO 

在步骤属性的高级的“成功时要执行的操作”选择“转到下一步”即可,这样“备份当日数据”的步骤已经建立好。

二、备份数据的第二个步骤--“删除旧有备份” 

我们可以设置只保留5天内的备份数据,那么必须删除5天前的数据备份文件。在“备份数据”作业属性窗口的步骤栏目里,建立第二个步骤命名为“删除旧有备份”。同样类型为“T-SQL”,命令窗口里填入一下SQL语句: 
DECLARE @OLDDATE DATETIME
SELECT @OLDDATE=GETDATE()-5
EXECUTE master.dbo.xp_delete_file 0,N'D:\BACKUP',N'bak',@olddate,1 
此命令会删除“D:\BACKUP”里5天前的.BAK或.TRN格式的文件,不用指定文件名是什么。

因为SQL SERVER的备份文件里包含了时间属性在里面。在步骤属性的高级的“成功时要执行的操作”选择“退出报告成功的作业”即可,这样第二个步骤已经建立好。 

三、备份数据作业属性的计划栏目里,设置作业的执行时间
 
新建一个作业计划,命名为“每日自动备份和删除”,再选择执行的周期,例如每天凌晨1点开始执行。  最后保存整个“备份数据”的作业,每日就会自动备份数据库和删除旧有数据了。