爱若晨风 发表于 2016-10-20 07:01:18

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
 
一切就解决了   

  
页: [1]
查看完整版本: dbexpress连接mysql提示Operation not allowed on a unidirectional dataset