access 用myodbc 访问mysql乱码问题

要把access的数据导入的mysql的方法,要么用专门的工具,如db2mysql,或者,就是连接两者,然后用sql语句操作。

ms access 连接mysql数据库的方法:

1.安装myodbc,3.51即可

2.在access中,使用外部链接表,把mysql数据表连接到access中,这样,mysql的表就跟access本身的表格一样处理。

中间,就是中文乱码的问题,

网上的解决办法都是:MYSQL ODBC 乱码的解决方法

大概就是在mysql的odbc连接选项中,在数据源配置项 Initial Statement 中填入 SET CHARACTER SET GBK

这种方法,显示的时候没有问题,中文能正常显示,但是,当你插入中文数据到mysql中时,照样是乱码。

其实,在代码中,访问mysql时,处理这种情况,就是在执行sql语句前,执行 set names GB2312

设置连接过程中的字符集。

但是,直接在access的sql模式中执行的话,会显示因为不是select ,update等sql语句而失败。

解决办法:就是把之前的陪着数据源的选项中的set character  set,直接改成 set names GB2312,即可。

参考:http://bugs.mysql.com/bug.php?id=3348

部署vs报表时发生登录失败的问题

用vs2010的reportviewer做了一个简单的报表展示界面,在vs的调试状态下,显示都没有问题,但是用vs的发布网站发布到IIS6后,打开出现

  • 处理报表时出错。
  • 调用的目标发生了异常。
  • 用户 ‘XXXXXXXXIWAM_CHINA-63C2C51D6’ 登录失败。

image

查看了IIS的配置,已经配置好了是使用IUSER_CHINA-63C2C51D6’登录的,很奇怪的是报错的竟然是IWAM_CHINA-63C2C51D6′ 用户。

后查看web.config配置,发现是数据库配置问题。

<add name="acrConnectionString" connectionString="Data Source=127.0.0.1;Initial Catalog=acr;Integrated Security=true;" providerName="System.Data.SqlClient"/>

原来数据库访问是使用Windows的验证,vs由于是当前用户访问,没有问题。

发布到IIS后,IIS内置账户没有访问数据库的权限,所以导致了登录失败的问题。

继续阅读

TOP ADO programming TIPS –

Connecting to data stores

How do I connect to a MS Access 2000 database?
ADOConnection.ConnectionString := ‘Provider=Microsoft.Jet.OLEDB.4.0;DataSource=C:MyDatabase.mdb;Persist Security Info=False’;

How do I connect to a password protected MS Access 2000 database?
ADOConnection.ConnectionString := ‘Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password=XXXXXX;DataSource=C:MyDatabase.mdb;Persist Security Info=False’;

What provider should I use for MS Access
For MS Access 97 use Microsoft.Jet.OLEDB.3.51
For MS Access 2000 use Microsoft.Jet.OLEDB.4.0

How do I connect to a dBase database?
ADOConnection.ConnectionString := ‘Provider=Microsoft.Jet.OLEDB.4.0;DataSource=C:MyDatabase.mdb;Extended Properties="dBase 5.0;"’;

How do I connect to a Paradox database?
ADOConnection.ConnectionString := ‘Provider=Microsoft.Jet.OLEDB.4.0;DataSource=C:MyDatabase.mdb;Extended Properties="Paradox 7.X;"’;

How do I connect to a MS Access database on a CD (read only) drive?
ADOConnection.Mode := cmShareExclusive;

继续阅读

sql server中利用备份建立数据库

经常的,从网站上备份了数据下来,想在本地查看数据,却总是无从下手,因为备份的数据库并不能直接在sql Server中使用。

使用方法:

1.建立一个空的数据库test

2.还原test数据库

选择备份的数据库文件test.bak

这时候,如果直接还原,会提示

标题: Microsoft SQL Server Management Studio
——————————

还原 对于 服务器“NEWMAPSERVER”失败。  (Microsoft.SqlServer.Smo)

有关帮助信息,请单击: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=9.00.3042.00&EvtSrc=Microsoft.SqlServer.Management.Smo.ExceptionTemplates.FailedOperationExceptionText&EvtID=还原+Server&LinkId=20476

——————————
其他信息:

System.Data.SqlClient.SqlError: 备份集中的数据库备份与现有的 ‘test’ 数据库不同。 (Microsoft.SqlServer.Smo)

有关帮助信息,请单击: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=9.00.3042.00&LinkId=20476

——————————

解决办法:选中还原选项“覆盖现有数据库”

image

再还原,就没有问题了。

3.查看还原完的数据库test,就可以看到备份下来的数据了。

sqlserver null转换和数据精度问题

把null的结果转换为0

isnull(afield,0)

如果afield的结果是null,就返回0,当然,可以把0转换为其他字段的值,如bfield

isnull(afield,bfield)

这在bfield在没有填写的时候,默认为afield的值,这样的情况下,最为有用

——————————————————————

数据精度:

用round

ROUND ( numeric_expression, length [ , function ] )  

如果要把afield的值,取两位小数,则为

round(afield,2) as afield