byte[] 数据如何存入数据库,程序编译通过,但运行报错

tiger8000 2014-02-11 11:08:43
我要将一个 byte[] 类型的数据存入数据库,以下做了一下测试

byte[] byteArray = System.Text.Encoding.Default.GetBytes("20133");
model.FingerCode = byteArray;
model.GongHao = name;
bll.Add(model);
label2.Text = "登记成功.";

vs 编译通过了,但是运行时报错,如下:

------------------------------------------------------------------


“System.Data.SqlClient.SqlException”类型的未经处理的异常在 DBUtility.dll 中发生

其他信息: 缺少对象或列名,或者对象或列名为空。对于 SELECT INTO 语句,请确保每列均具有名称。对于其他语句,请查找空的别名。不允许使用定义为 "" 或 [] 的别名。请添加名称或单个空格作为别名。

在此上下文中不允许使用名称 "System.Byte"。有效表达式包括常量、常量表达式和变量(在某些上下文中)。不允许使用列名。

-------------------------------------------------------------------

byte[] 类型数据如何才能写入数据库呢,数据库中对应字段设为 binary(1024) 字段类型。

请高手指教 ,万分感激!!
...全文
342 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
weikai55566 2014-04-03
  • 打赏
  • 举报
回复
之前的问题错在哪里呢?
Regan-lin 2014-02-11
  • 打赏
  • 举报
回复
引用 3 楼 tiger8000 的回复:
sql语句我是这样写的,编译能通过 byte[] byteArray = System.Text.Encoding.Default.GetBytes("20133"); string sql = "insert into users (FingerCode,GongHao) values (" + byteArray + ",'" + name + "')"; Guan.DBUtility.DbHelperSQL.ExecuteSql(sql); 运行时报错: 其他信息: 缺少对象或列名,或者对象或列名为空。对于 SELECT INTO 语句,请确保每列均具有名称。对于其他语句,请查找空的别名。不允许使用定义为 "" 或 [] 的别名。请添加名称或单个空格作为别名。 在此上下文中不允许使用名称 "System.Byte"。有效表达式包括常量、常量表达式和变量(在某些上下文中)。不允许使用列名。
你的FingerCode在数据库定义的是什么类型,看下
tiger8000 2014-02-11
  • 打赏
  • 举报
回复
sql语句我是这样写的,编译能通过 byte[] byteArray = System.Text.Encoding.Default.GetBytes("20133"); string sql = "insert into users (FingerCode,GongHao) values (" + byteArray + ",'" + name + "')"; Guan.DBUtility.DbHelperSQL.ExecuteSql(sql); 运行时报错: 其他信息: 缺少对象或列名,或者对象或列名为空。对于 SELECT INTO 语句,请确保每列均具有名称。对于其他语句,请查找空的别名。不允许使用定义为 "" 或 [] 的别名。请添加名称或单个空格作为别名。 在此上下文中不允许使用名称 "System.Byte"。有效表达式包括常量、常量表达式和变量(在某些上下文中)。不允许使用列名。
Regan-lin 2014-02-11
  • 打赏
  • 举报
回复
查看你的sql语句,看是不是和你数据库定义的列数量,名字一样的
feiyun0112 2014-02-11
  • 打赏
  • 举报
回复
看你的具体写数据库的sql

*****************************************************************************
签名档: http://feiyun0112.cnblogs.com/
tiger8000 2014-02-11
  • 打赏
  • 举报
回复
用sqlparameter string sql = "insert into users (FingerCode,GongHao) values (@FingerCode,'" + name + "')"; cmd=new sqlcommand(sql,con); cmd.parameter.addwithvalue("@FingerCode",sqldbtype.binary).value=byteArray ; con.open(); cmd.executenonquery(); con.close(); --- 用此方法解决了,不管字段 是 binary 还是 image 都成功 谢谢以上朋友们
tcmakebest 2014-02-11
  • 打赏
  • 举报
回复
byte[] 需要对应 image 类型的字段
tiger8000 2014-02-11
  • 打赏
  • 举报
回复
你的FingerCode在数据库定义的是什么类型,看下 数据类型 为:binary(1024)
feiyun0112 2014-02-11
  • 打赏
  • 举报
回复
用sqlparameter

string sql = "insert into users (FingerCode,GongHao) values (@FingerCode,'" + name + "')";
cmd=new sqlcommand(sql,con);

cmd.parameter.addwithvalue("@FingerCode",sqldbtype.binary).value=byteArray ;

con.open();
cmd.executenonquery();
con.close();

110,499

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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