.net平台C#调用ODBC插入jpg格式图片到Filemaker(苹果公司数据库)数据库

oO寒枫Oo 2011-02-17 11:22:58
初次发帖(一定会结贴!~~)
有谁用过Filemaker数据库的来帮帮忙啊。

现在用代码可以将图片正确的以二进制插入到MYSQL,SQL server数据库,这个是没有问题的。

但是当图片以二进制插入到Filemaker数据库中之后(此时用到filemaker自带的函数 PutAs进行转化),数据不对,打开是空的。

下面是部分C#代码,有知道的大侠来帮帮忙啊

string connectString = "DRIVER={DataDirect 32-BIT SequeLink 5.5};Server=localhost;DataBase=DataBaseName;uid=userName;pwd=123456;";
string cOdbcConnection conn = new OdbcConnection(connectString);
conn.Open();

byte [] productPic ;//图片假设已经转化成二进制格式,并且已赋值
string sql = string.Format("INSERT INTO products (name,picture) ('AAAA', PutAs( ‘"+ productPic +"’ ,'JEPG' )");
//PutAs 是Filemaker数据库的函数,作用是把插入变量转化成可以图片格式,以便数据库识别。PutAs(‘插入变量’,‘JEPG’)。

OdbcCommand command = new OdbcCommand(sql,conn); //conn 连接值存在。
commad.ExecuteNoQuery();

conn.Close();

另外有关Filemaker利用ODBC JDBC进行操作的帮助文档在这个网址可以找到(插入的方法在第42页)。我也用这上面的方法进行实验,但是一直没有成功。不知道问题出在哪里。希望大家都来帮帮忙。
URL:http://www.filemaker.com/support/product/docs/fmp/fm11_odbc_jdbc_guide_en.pdf
期待您的回答
...全文
390 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
大道曙光 2013-11-08
  • 打赏
  • 举报
回复
引用 5 楼 lxpbs8851 的回复:
这个问题现在已经解决了。 原因在于使用OBDC后,sql的占位符必须用? 。 正确的代码应该是这样写的

string  connectString = "DRIVER={DataDirect 32-BIT SequeLink 5.5};Server=localhost;DataBase=DataBaseName;uid=userName;pwd=123456;";
string cOdbcConnection conn = new OdbcConnection(connectString);
conn.Open();

byte [] productPic ;//图片假设已经转化成二进制格式,并且已赋值
string sql = string.Format("INSERT INTO products (name,picture) ('AAAA', PutAs( ? ,'JEPG'   )");
//1)PutAs 是Filemaker数据库的函数,作用是把插入变量转化成可以图片格式,以便数据库识别。PutAs(‘插入变量’,‘JEPG’)。
//2)特别占位符要用问号 "?"

OdbcCommand command = new OdbcCommand(sql,conn); //conn 连接值存在。
 OdbcParameter param = new OdbcParameter();// 新建一个参数
 param.OdbcType = OdbcType.Image; // 参数设置为 Image类型
 param.Value = productPie;         // 给参数赋值
 command.Parameters.Add(param);   //在命令中添加参数
 command.ExecuteNonQuery();   //执行命令

conn.Close();


大赞!!!
okkon 2013-03-16
  • 打赏
  • 举报
回复
估计版本不同也会有差异的
oO寒枫Oo 2011-06-17
  • 打赏
  • 举报
回复
希望能够帮助遇到同样问题的人、。
oO寒枫Oo 2011-06-17
  • 打赏
  • 举报
回复
这个问题现在已经解决了。
原因在于使用OBDC后,sql的占位符必须用? 。
正确的代码应该是这样写的

string connectString = "DRIVER={DataDirect 32-BIT SequeLink 5.5};Server=localhost;DataBase=DataBaseName;uid=userName;pwd=123456;";
string cOdbcConnection conn = new OdbcConnection(connectString);
conn.Open();

byte [] productPic ;//图片假设已经转化成二进制格式,并且已赋值
string sql = string.Format("INSERT INTO products (name,picture) ('AAAA', PutAs( ? ,'JEPG' )");
//1)PutAs 是Filemaker数据库的函数,作用是把插入变量转化成可以图片格式,以便数据库识别。PutAs(‘插入变量’,‘JEPG’)。
//2)特别占位符要用问号 "?"

OdbcCommand command = new OdbcCommand(sql,conn); //conn 连接值存在。
OdbcParameter param = new OdbcParameter();// 新建一个参数
param.OdbcType = OdbcType.Image; // 参数设置为 Image类型
param.Value = productPie; // 给参数赋值
command.Parameters.Add(param); //在命令中添加参数
command.ExecuteNonQuery(); //执行命令

conn.Close();


dabao1026 2011-06-17
  • 打赏
  • 举报
回复
我装的是fmp_trial_fm_11.0.2.220.exe, 在ODBC设置过程中,在最后的连接测试阶段看到的驱动信息是"FileMaker ODBC ドライバ (32-bit) 11.2.70.0",
那么链接字符串是不是该改成如下啊?
string connectString = "DRIVER={FileMaker ODBC ドライバ (32-bit) 11.2.70.0};
Server=localhost;DataBase=DataBaseName;uid=userName;pwd=123456;";
string cOdbcConnection conn = new OdbcConnection(connectString);
conn.Open();

还有DataBase是不是数据库的名字啊?还是ODBC配置时指定的数据源名字啊?
oO寒枫Oo 2011-02-22
  • 打赏
  • 举报
回复
怎么没人回答?

2,209

社区成员

发帖
与我相关
我的任务
社区描述
其他数据库开发 其他数据库
社区管理员
  • 其他数据库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧