一张数据表Products 其中三个字段,id(int)自增,name(vachar(100)),picture(container类型)。现在要图片插入到picture 字段。
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();
现在问题是图片可以插入数据库(untitled.jpg),但是数据不对,打开是空的。如果不使用filemaker自带的函数 PutAs转化,插入到数据库是System.Byte[];那么插入Filemaker 数据库container 格式在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();
现在问题是图片可以插入数据库(untitled.jpg),但是数据不对,打开是空的。如果不使用filemaker自带的函数 PutAs转化,插入到数据库是System.Byte[];那么插入Filemaker 数据库container 格式在C#里要什么数据类型(不是二进制的话)?
不过如果是Byte[]数据的话,也可以转换成图片呀[align=center]*************************************************
本内容使用CSDN小秘书回复
每天回帖即可得10分可用分!
*************************************************[/align]
你说的这个是在插入到sql sever 中,这种方法在Filemaker中没有用。 你这种方法在mysql 数据库也是好用的。
不过还是要谢谢你。
检查字段数据长度
http://help.filemaker.com/app/answers/list/kw/insert%20photo
同样的数据可以插入到Mysql中。
这个字段可以存储16M大小的图片。
大家如果有兴趣的可以看看这个 具体插入在42页 用C#试试看能不能正确的插入
GetAs(columnname,'JPEG') PutAs(columnname,'JPEG')
原因在于使用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();
那么链接字符串是不是该改成如下啊?
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配置时指定的数据源名字啊?