Ⅰ C# winfrom 如何将byte 用sql语句加入数据库
photo应该是一个一个添加的吧
下面是一个将图片转换为byte[],然后直接添加此参数
//实例化一个文件流,与写入文件相关联
FileStream fs = new FileStream(photoPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
//获得字节数组
byte[] photoData = new byte[fs.Length];
//开始写入
fs.Read(photoData, 0, imgData.Length);
//关闭流
fs.Close();
……
//photo字段在数据库中为image类型(二进制数据)
cmd.Parameters.Add("@Photo", SqlDbType.Image).Value = photoData;
cmd.ExecuteNonQuery();
另外,你的sql语句也太复杂了,其实,即使是数字,在数据库中也可以设置为varchar类型,如果数据是从textbox中添加的(textbox中的值是string类型),就不需要类型转换了。
string sql = string.Format("insert into EM_Name values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}',{9},{10})", pm.No, pm.Name, pm.Rfidone, pm.Rfidtwo, pm.Rfidthree,pm.Photo, pm.Sex, pm.Phone, pm.Pichi, pm.Type,pm.Group);
Ⅱ 如何向postgreSQL中添加bytea类型的大对象数据
PostgreSQL二进制数据类型bytea保存2G数据ADO、ODBC等接口通带参数化插入SQL语句传二进制
某些接口、SQL语句进行参数绑定或者某些语言没二进制类型或者接口兼容等原传二进制数据
碰种情况必须客户端二进制转化定规则字符序列插入语句显示转换cast('字符序列' as bytea).
二进制转化字符序列规则:
析每字节其ASCII值031127255或39、92请字节转化3位八进制字符串前面加2反斜杠chr(39)表示//047. 其ascii值显示字符变全部转化八进制整字符串太浪费空间
二进制序列 chr(0)+'a'+'b'+chr(233)+chr(25)+'c'转化字符序列:
//000ab//351//031c
传候再显示转换 insert into table1 (aa) values (cast('//000ab//351//031c' as bytea))
二进制数据太传,用||连接符连接起,:
insert into table1 (id,aa) values (1,cast('序列1' as bytea))
update table1 set aa=aa||cast('序列2' as bytea) where id=1
Ⅲ postgresql插入bytea类型数据,sql语句
PostgreSQL的二进制数据类型为bytea,可最多保存2G的数据。在ADO、ODBC等接口,可通过带参数化的插入SQL语句上传二进制。
然而在某些接口、SQL语句无法进行参数绑定,或者某些语言没有二进制的类型,或者接口的不兼容等原因,常无法上传二进制数据。
碰到这种情况下,必须在客户端将二进制转化为一定规则的字符序列,然后插入语句时,来个显示转换cast('字符序列' as bytea).
二进制转化为字符序列的规则:
分析每个字节,当其ASCII值在0到31,127到255,或为39、92,请将这字节转化为3位的八进制字符串,前面加上2个反斜杠,如chr(39)表示为//047. 其他ascii值为可显示字符,不变,当然你也可全部转化为八进制,但这样整个字符串太长,浪费空间。
如二进制序列 chr(0)+'a'+'b'+chr(233)+chr(25)+'c'转化为字符序列为:
//000ab//351//031c
上传的时候再来个显示转换,如 insert into table1 (aa) values (cast('//000ab//351//031c' as bytea))
如果二进制数据太大,可分次上传,用||连接符连接起来,如:
insert into table1 (id,aa) values (1,cast('序列1' as bytea))
update table1 set aa=aa||cast('序列2' as bytea) where id=1
Ⅳ byte数据怎么写到SQL server 2008
1可以直接用字符串的形式存储,取值的时候注意转换下就行。
2 数据太多,可以用二进制数类型image
Ⅳ sql语句怎么添加一条记录
sql语句中,添加记录的语法为:insert into 表名 (col1,col2....coln)values(value1,value2.....valuen);
其中,如果你插入的每一列都是顺序插入,无一缺漏的话,(col1,col2...coln)可以省略。
也就是上式也可以简化为:insert into 表名values(value1,value2.....valuen);
看了你写的sql代码,问题出在insert into 的整体语句出现在了不该出现的地方,只需做一点小改动即可解决,如下图:
解析:insert into语句需要在user表已经存在的情况下才可以使用。而你原来的语句中,将上图2中的语句插入到了create table user的语句中,致使create table user 语句未能成功执行,所以才会报错。
而将“INSERT INTO user(uid,tel) values('甲','3354986');”整条语句直接拿出来放在“ENGINE=InnoDB DEFAULT CHARSET=gbk;”后面之后,整个sql就可以顺利执行了。
(5)sql语句插入byte数据扩展阅读:
当mysql大批量插入数据的时候就会变的非常慢,mysql提高insert into 插入速度的方法有三种:
1、第一种插入提速方法:
如果数据库中的数据已经很多(几百万条), 那么可以加大mysql配置中的 bulk_insert_buffer_size,这个参数默认为8M
举例:bulk_insert_buffer_size=100M;
2、第二种mysql插入提速方法:
改写所有 insert into 语句为insertdelayed into
这个insert delayed不同之处在于:立即返回结果,后台进行处理插入。
3、第三个方法: 一次插入多条数据:
insert中插入多条数据,举例:
insert into table values('11','11'),('22','22'),('33','33')...;
Ⅵ 如何使用sql语句向表中插入一行新数据
insert into 表名(列1,列2,列3)
values (值1,值2,值3)