60分求解binary转换问题

TaoXiaobing 2007-01-04 01:32:00
代码如下:
SqlCommand cmd = new SqlCommand("UserIsExict",conn);
cmd.CommandType = CommandType.StoredProcedure;

cmd.Parameters.Add(new SqlParameter("@Uid",SqlDbType.Binary,30));
cmd.Parameters["@Uid"].Value = Encoding.UTF32.GetBytes(paraUid);

cmd.Parameters.Add(new SqlParameter("@UserName",SqlDbType.Binary,30));
cmd.Parameters["@UserName"].Direction = ParameterDirection.Output;

conn.Open();
cmd.ExecuteNonQuery();
conn.Close();

想获取cmd中的参数"@UserName"的值且转换为string类型,参数"@UserName"是binary类型的,
...全文
847 40 打赏 收藏 转发到动态 举报
写回复
用AI写文章
40 条回复
切换为时间正序
请发表友善的回复…
发表回复
kmdkyy 2007-01-05
  • 打赏
  • 举报
回复
大哥们,我等到半夜了啊!!!
~~~~~~~~~~~~~~~``
kmdkyy 2007-01-05
  • 打赏
  • 举报
回复
kmdkyy 2007-01-05
  • 打赏
  • 举报
回复
那为什么我将字段改成char型时又有返回值呢?
数据库:
CREATE procedure UserIsExict
@Uid binary(30),
@UserName binary(30) output
as
select @UserName=UserName from AlbumLogin where Uid=@Uid
GO
程序:
SqlCommand cmd = new SqlCommand("UserIsExict",conn);
cmd.CommandType = CommandType.StoredProcedure;

cmd.Parameters.Add(new SqlParameter("@Uid", SqlDbType.Binary, 30));
cmd.Parameters["@Uid"].Value = Encoding.UTF32.GetBytes(paraUid);

cmd.Parameters.Add(new SqlParameter("@UserName",SqlDbType.Binary,30));
cmd.Parameters["@UserName"].Direction = ParameterDirection.Output;

conn.Open();
cmd.ExecuteNonQuery();
conn.Close();

return Encoding.UTF32.GetString( ((byte[])cmd.Parameters["@UserName"].Value) );

错误:
无法将类型为“System.DBNull”的对象强制转换为类型“System.Byte[]”
Eri 2007-01-05
  • 打赏
  • 举报
回复
是不是存储过程 UserIsExict 没有返回值?
rainyubin 2007-01-05
  • 打赏
  • 举报
回复
学习
TaoXiaobing 2007-01-05
  • 打赏
  • 举报
回复
谢谢!
qq287888462 2007-01-05
  • 打赏
  • 举报
回复
学习,我顶
TaoXiaobing 2007-01-04
  • 打赏
  • 举报
回复
但是不对啊,为什么会是空呢,那应该是有值的,我就是想要那个值
calmzeal 2007-01-04
  • 打赏
  • 举报
回复

你可以在强制转化前 单独判断一下是否为空
byte[] b =
(cmd.Parameters["@UserName"].value==null)?
new byte[0]:
(byte[])cmd.Parameters["@UserName"].value;
kmdkyy 2007-01-04
  • 打赏
  • 举报
回复
但是数据库要求用binary类型的
kmdkyy 2007-01-04
  • 打赏
  • 举报
回复
是binary类型的
但改成char类型时可以,如果是binary类型就出现不能将DBNull值转换在byte[]
calmzeal 2007-01-04
  • 打赏
  • 举报
回复
你数据库中 UserName 字段是什么类型的?
kmdkyy 2007-01-04
  • 打赏
  • 举报
回复
转化还是出错,说是不能将DBNull值转换在byte[]
但是我把数据库的类型改成char时得到值是正确的,为什么用binary类型时就成为空了
calmzeal 2007-01-04
  • 打赏
  • 举报
回复
刚回来看到
你照楼上说的强制转化一下先
机器人 2007-01-04
  • 打赏
  • 举报
回复
byte[] b = (byte[])cmd.Parameters["@UserName"].value;
TaoXiaobing 2007-01-04
  • 打赏
  • 举报
回复
代码如下:
SqlCommand cmd = new SqlCommand("UserIsExict",conn);
cmd.CommandType = CommandType.StoredProcedure;

cmd.Parameters.Add(new SqlParameter("@Uid",SqlDbType.Binary,30));
cmd.Parameters["@Uid"].Value = Encoding.UTF32.GetBytes(paraUid);

cmd.Parameters.Add(new SqlParameter("@UserName",SqlDbType.Binary,30));
cmd.Parameters["@UserName"].Direction = ParameterDirection.Output;

conn.Open();
cmd.ExecuteNonQuery();
conn.Close();

想获取cmd中的参数"@UserName"的值且转换为string类型,参数"@UserName"是binary类型的,

用:
byte[] b = cmd.Parameters["@UserName"].value;
string sUserName = Encoding.UTF32.GetString(b);

但又出现以下错误:
错误 1 无法将类型“object”隐式转换为“byte[]”。存在一个显式转换(是否缺少强制转换?)
TaoXiaobing 2007-01-04
  • 打赏
  • 举报
回复
代码如下:
SqlCommand cmd = new SqlCommand("UserIsExict",conn);
cmd.CommandType = CommandType.StoredProcedure;

cmd.Parameters.Add(new SqlParameter("@Uid",SqlDbType.Binary,30));
cmd.Parameters["@Uid"].Value = Encoding.UTF32.GetBytes(paraUid);

cmd.Parameters.Add(new SqlParameter("@UserName",SqlDbType.Binary,30));
cmd.Parameters["@UserName"].Direction = ParameterDirection.Output;

conn.Open();
cmd.ExecuteNonQuery();
conn.Close();

想获取cmd中的参数"@UserName"的值且转换为string类型,参数"@UserName"是binary类型的,

用:
byte[] b = cmd.Parameters["@UserName"].value;
string sUserName = Encoding.UTF32.GetString(b);

但又出现以下错误:
错误 1 无法将类型“object”隐式转换为“byte[]”。存在一个显式转换(是否缺少强制转换?)

TaoXiaobing 2007-01-04
  • 打赏
  • 举报
回复
谢谢!
kmdkyy 2007-01-04
  • 打赏
  • 举报
回复
帮顶,学习
TaoXiaobing 2007-01-04
  • 打赏
  • 举报
回复
没人回答了啊
加载更多回复(19)
本框架提供了有关粒子群算法(PSO)和遗传算法(GA)的完整实现,以及一套关于改进、应用、测试、结果输出的完整框架。 本框架对粒子群算法与遗传算法进行逻辑解耦,对其中的改进点予以封装,进行模块化,使用者可以采取自己对该模块的改进替换默认实现组成新的改进算法与已有算法进行对比试验。试验结果基于Excel文件输出,并可通过设定不同的迭代结束方式选择试验数据的输出方式,包括: 1. 输出随迭代次数变化的平均达优率数据(设定终止条件区间大于0)。 2. 输出随迭代次数变化的平均最优值数据(设定终止条件区间等于0)。 本框架了包含了常用基准函数的实现以及遗传算法与粒子群算法对其的求解方案实现和对比,如TSP,01背包,Banana函数,Griewank函数等。并提供大量工具方法,如KMeans,随机序列生成与无效序列修补方法等等。 对遗传算法的二进制编码,整数编码,实数编码,整数序列编码(用于求解TSP等),粒子群算法的各种拓扑结构,以及两种算法的参数各种更新方式均有实现,并提供接口供使用者实现新的改进方式并整合入框架进行试验。 其中还包括对PSO进行离散化的支持接口,和自己的设计一种离散PSO方法及其用以求解01背包问题的实现样例。 欢迎参考并提出宝贵意见,特别欢迎愿意协同更新修补代码的朋友(邮箱starffly@foxmail.com)。 代码已作为lakeast项目托管在Google Code: http://code.google.com/p/lakeast http://code.google.com/p/lakeast/downloads/list 某些类的功能说明: org.lakest.common中: BoundaryType定义了一个枚举,表示变量超出约束范围时为恢复到约束范围所采用的处理方式,别是NONE(不处理),WRAP(加减若干整数个区间长度),BOUNCE(超出部向区间内部折叠),STICK(取超出方向的最大限定值)。 Constraint定义了一个代表变量约束范围的类。 Functions定义了一系列基准函数的具体实现以供其他类统一调用。 InitializeException定义了一个代表程序初始化出现错误的异常类。 Randoms类的各个静态方法用以产生各种类型的随机数以及随机序列的快速产生。 Range类的实现了用以判断变量是否超出约束范围以及将超出约束范围的变量根据一定原则修补到约束范围的方法。 ToStringBuffer是一个将数组转换为其字符串表示的类。 org.lakeast.ga.skeleton中: AbstractChromosome定义了染色体的公共方法。 AbstractDomain是定义问题域有关的计算与参数的抽象类。 AbstractFactorGenerator定义产生交叉概率和变异概率的共同方法。 BinaryChromosome是采用二进制编码的染色体的具体实现类。 ConstantFactorGenerator是一个把交叉概率和变异概率定义为常量的参数产生器。 ConstraintSet用于在计算过程中保存和获取应用问题的各个维度的约束。 Domain是遗传算法求解中所有问题域必须实现的接口。 EncodingType是一个表明染色体编码类型的枚举,包括BINARY(二进制),REAL(实数),INTEGER(整型)。 Factor是交叉概率和变异概率的封装。 IFactorGenerator参数产生器的公共接口。 Population定义了染色体种群的行为,包括种群的迭代,轮盘赌选择和交叉以及最优个体的保存。 org.lakeast.ga.chromosome中: BinaryChromosome二进制编码染色体实现。 IntegerChromosome整数编码染色体实现。 RealChromosome实数编码染色体实现。 SequenceIntegerChromosome整数序列染色体实现。 org.lakeast.pso.skeleton中: AbstractDomain提供一个接口,将粒子的位置向量解释到离散空间,同时不干扰粒子的更新方式。 AbstractFactorGenerator是PSO中参数产生器的公共抽象类。 AbstractParticle定义了PSO种群中粒子的基本行为,最主要是实现了如何根据现有位置计算得到下一代粒子的位置的合法值。 ConstraintSet用于在粒子迭代过程中保存和获取应用问题的各个维度的约束。 AbstractSwarm.java各种拓扑结构的PSO种群的抽象父类,主要实现了种群迭代过程中计算流程的定义以及中间数据被如何输出到测试工具类。 Domain是PSO算法求解中所有问题域必须实现的接口。 DynamicFatorGenerator若种群在迭代过程中,w,c1,c2随迭代次数发生变化,那么它们的产生器需要继承这个抽象类。 Factor封装了w,c1,c2三个参数的字面值。 Location用于保存和获取迭代中粒子的位置和速度向量的数值。 NeighborhoodBestParticle定义了采用邻域版本的PSO算法的具体实现。主要是实现了如何根据邻域版本的PSO算法计算下一迭代中的粒子速度。 RingTopoSwarm定义环拓扑结构的具体实现,主要是定义了如何获取粒子的邻域粒子的方法。 StaticTopoSwarm静态拓扑结构的PSO算法的抽象父类。 org.lakeast.pso.swarm中包含粒子群拓扑结构的各种实现,基本见名知意。 对各种问题求解样例位于org.lakeast.main包中,以...TaskTest结尾,基本见名知意。 以ShafferF6DomainTaskTes对ShafferF6函数进行求解(采用的是PSO,遗传算法样例参见TSPValueTaskTest)为例说明求解过程如下: 1. 入口函数位于org.lakeast.main.ShafferF6DomainTaskTest中,go函数执行。 2. 在go函数中,首先指定迭代次数(numberOfIterations),测试多少轮(testCount,多次运行以得到平均达优值),种群大小(popSize),邻域大小(neighborhoodSize),迭代结束条件(exitCondition,由于制定了迭代次数,所以设定为[0,0],也就是只有达到指定迭代次数才退出)。 3. 以testCount,numberOfIterations以及迭代结束条件exitCondition为参数构建TestBatch类的实例batch。这个类用来进行管理参与测试的各种具体算法,且把数据结果按指定的格式输出为Excel文件。 4. 指定PSO中的因子产生方法,采用ExponentFactorGenerator和ConstrictFactorGenerator两种方式(实现位于org.lakeast.pso.gen包)。 5. Y表示参与测试的算法数目。 6. Testable是所有可以被TestBatch测试的类需要实现的接口,以提供TestBatch生成结果Excel文件所需要的数据。 7. Domain接口是所有可以被算法解决的问题所需要实现的接口,比如说明该问题所需要的粒子位置约束范围,速度约束范围,以及适值评估的公司等。这里的Domain被实例化为ShafferF6Domain,也就是按照ShafferF6函数评估适值。 8. RingTopoSwarm是用来封装环拓扑邻域结构的类,NeighboordBestParticle是配合该类来实现按邻域最优更新速度而不是全局最优来更新。 9. 各个测试算法都被加入到TestBatch以后,batch.run()开始执行算法比较过程并输出结果Excel文件到C盘根目录(输出路径可在Testable接口中配置,除了生成Excel文件外,还可以通过修改log4j.properties在制定的位置产生运行结果日志)。
目录 一.数论 4 1.阶乘最后非零位 4 2. 模线性方程(组) 4 3. 素数表 6 4. 素数随机判定(miller_rabin) 6 5. 质因数解 7 6. 最大公约数欧拉函数 8 二.图论_匹配 9 1. 二图最大匹配(hungary邻接表形式) 9 2. 二图最大匹配(hungary邻接表形式,邻接阵接口) 10 3. 二图最大匹配(hungary邻接阵形式) 10 4. 二图最大匹配(hungary正向表形式) 11 5. 二图最佳匹配(kuhn_munkras邻接阵形式) 11 6. 一般图匹配(邻接表形式) 12 7. 一般图匹配(邻接表形式,邻接阵接口) 13 8. 一般图匹配(邻接阵形式) 14 9. 一般图匹配(正向表形式) 15 三.图论_生成树 16 1. 最小生成树(kruskal邻接表形式) 16 2. 最小生成树(kruskal正向表形式) 17 3. 最小生成树(prim+binary_heap邻接表形式) 19 4. 最小生成树(prim+binary_heap正向表形式) 20 5. 最小生成树(prim+mapped_heap邻接表形式) 21 6. 最小生成树(prim+mapped_heap正向表形式) 22 7. 最小生成树(prim邻接阵形式) 23 8. 最小树形图(邻接阵形式) 24 四.图论_网络流 25 1. 上下界最大流(邻接表形式) 25 2. 上下界最大流(邻接阵形式) 26 3. 上下界最小流(邻接表形式) 27 4. 上下界最小流(邻接阵形式) 29 5. 最大流(邻接表形式) 30 6. 最大流(邻接表形式,邻接阵接口) 31 7. 最大流(邻接阵形式) 32 8. 最大流无流量(邻接阵形式) 32 9. 最小费用最大流(邻接阵形式) 33 五. 图论_最短路径 34 1. 最短路径(单源bellman_ford邻接阵形式) 34 2. 最短路径(单源dijkstra_bfs邻接表形式) 35 3. 最短路径(单源dijkstra_bfs正向表形式) 35 4. 最短路径(单源dijkstra+binary_heap邻接表形式) 36 5. 最短路径(单源dijkstra+binary_heap正向表形式) 37 6. 最短路径(单源dijkstra+mapped_heap邻接表形式) 38 7. 最短路径(单源dijkstra+mapped_heap正向表形式) 39 8. 最短路径(单源dijkstra邻接阵形式) 40 9. 最短路径(多源floyd_warshall邻接阵形式) 40 六. 图论_连通性 41 1. 无向图关键边(dfs邻接阵形式) 41 2. 无向图关键点(dfs邻接阵形式) 42 3. 无向图块(bfs邻接阵形式) 43 4. 无向图连通支(bfs邻接阵形式) 43 5. 无向图连通支(dfs邻接阵形式) 44 6. 有向图强连通支(bfs邻接阵形式) 44 7. 有向图强连通支(dfs邻接阵形式) 45 8. 有向图最小点基(邻接阵形式) 46 七. 图论_应用 46 1.欧拉回路(邻接阵形式) 46 2. 前序表转化 47 3. 树的优化算法 48 4. 拓扑排序(邻接阵形式). 49 5. 最佳边割集 50 6. 最佳顶点割集 51 7. 最小边割集 52 8. 最小顶点割集 53 9. 最小路径覆盖 55 八. 图论_NP搜索 55 1. 最大团(n小于64)(faster) 55 2. 最大团 58 九. 组合 59 1. 排列组合生成 59 2. 生成gray码 60 3. 置换(polya) 61 4. 字典序全排列 61 5. 字典序组合 62 6. 组合公式 62 十. 数值计算 63 1. 定积计算(Romberg) 63 2. 多项式求根(牛顿法) 64 3. 周期性方程(追赶法) 66 十一. 几何 67 1. 多边形 67 2. 多边形切割 70 3. 浮点函数 71 4. 几何公式 76 5. 面积 78 6. 球面 79 7. 三角形 79 8. 三维几何 81 9. 凸包(graham) 89 10. 网格(pick) 91 11. 圆 92 12. 整数函数 94 13. 注意 96 十二. 结构 97 1. 并查集 97 2. 并查集扩展(friend_enemy) 98 3. 堆(binary) 98 4. 堆(mapped) 99 5. 矩形切割 99 6. 线段树 100 7. 线段树扩展 102 8. 线段树应用 105 9. 子段和 105 10. 子阵和 105 十三. 其他 106 1. 数 106 2. 矩阵 108 3. 日期 110 4. 线性方程组(gauss) 111 5. 线性相关 113 十四. 应用 114 1. joseph 114 2. N皇后构造解 115 3. 布尔母函数 115 4. 第k元素 116 5. 幻方构造 116 6. 模式匹配(kmp) 118 7. 逆序对数 118 8. 字符串最小表示 119 9. 最长公共单调子序列 119 10. 最长子序列 120 11. 最大子串匹配 121 12. 最大子段和 122 13. 最大子阵和 123 常用源代码 包括很多经典算法 数学问题: 1.精度计算——大数阶乘 2.精度计算——乘法(大数乘小数) 3.精度计算——乘法(大数乘大数) 4.精度计算——加法 5.精度计算——减法 6.任意进制转换 7.最大公约数、最小公倍数 8.组合序列 9.快速傅立叶变换(FFT) 10.Ronberg算法计算积 11.行列式计算 12.求排列组合数 字符串处理: 1.字符串替换 2.字符串查找 3.字符串截取 计算几何: 1.叉乘法求任意多边形面积 2.求三角形面积 3.两矢量间角度 4.两点距离(2D、3D) 5.射向法判断点是否在多边形内部 6.判断点是否在线段上 7.判断两线段是否相交 8.判断线段与直线是否相交 9.点到线段最短距离 10.求两直线的交点 11.判断一个封闭图形是凹集还是凸集 12.Graham扫描法寻找凸包 数论: 1.x的二进制长度 2.返回x的二进制表示中从低到高的第i位 3.模取幂运算 4.求解模线性方程 5.求解模线性方程组(中国余数定理) 6.筛法素数产生器 7.判断一个数是否素数 图论: 1.Prim算法求最小生成树 2.Dijkstra算法求单源最短路径 3.Bellman-ford算法求单源最短路径 4.Floyd算法求每对节点间最短路径 排序/查找: 1.快速排序 2.希尔排序 3.选择法排序 4.二查找 数据结构: 1.顺序队列 2.顺序栈 3.链表 4.链栈 5.二叉树

110,577

社区成员

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

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

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