dbexpress连接mysql提示Operation not allowed on a unidirectional dataset

最近刚接触delphi,在了解到dbExpress连接mysql的时候,出现了一些问题,特记录下

 

我遇到的问题有两个

1.

TDBGrid --DataSet=TDataSource1

TDataSource --DataSet = SqlTable1

DBNavigator -- DataSet

SQLConnection -- ConnectionName=MYSQLCONNECTION,Drive=MYSQL

SQLTable --SqlConnection=SqlConnection1 TableName=t_tablename  Active=true

 

dbExpress -> TDataSource ->TDBGrid 

 

前面是主要用到的控件,后面是相关的属性(简单测试了下,没有涉及到代码);

遇到的问题就是在设置TDBGrid的DataSet属性时,它会提示

Operation not allowed on a unidirectional dataset

 

大致意思就是“不允许一个单向的数据集操作”

 

后来在网上搜索了下,说是需要这样操作才可以

 

dbExpress -> TDataSetProvider -> TClientDataSet -> TDataSource ->TDBGrid 

 

后来我又设置了下

 

TDBGrid --DataSet=TDataSource1

TDataSource --DataSet = SqlTable1

DBNavigator -- DataSet

SQLConnection -- ConnectionName=MYSQLCONNECTION,Drive=MYSQL

SQLTable --SqlConnection=SqlConnection1 TableName=t_tablename  Active=true

DataSetProvider -- DataSet=SqlTable1

ClientDataSet -- Providername=DataSetProvider1 Active=true

 

这样一切就Ok了

不会报错,数据也正常显示了,但有一个问题,通过DBNavigator进行相关数据库操作,比如添加,编辑数据的时候,貌似不能添加或编辑成功。不知何故

 

我遇到的第二个问题就是乱码的问题

 

数据库中的表是采用的utf8格式的,读出来的全是问号,

我是这样解决的

 

修改SqlConnection--Params属性,找到SeverCharSet=gbk

 

一切就解决了   

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值