代码如下:
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类型的,
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类型的,
解决方案 »
- 请问,如何禁用ListBox的左、右方向键选定功能
- winform -----listview获得文件路径
- 一个关于TextBox的问题
- 怎么获得系统时间并将它插入datetime型数据库列中?
- VS2005C#语言如何制作精美图形报表(象股票那样)
- 假如我把字符串(AAA)以Image的数据类型存入道SQL数据库中,再从数据库中读出该字符串(AAA),把该字符串(AAA)添加到ComboBox控件的It
- CommandText里的
- 五个三角换成了一个五角,散分...
- 新手上路求助!!
- 为什么timer没有name属性???如何解决这个问题
- 急!在线等。关于在C#中调用非托管.exe程序的问题?
- 注册表取值问题,在线等,谢谢大家了!
str = cmd.Parameters["@UserName"].value.ToString();
那怎么将inputValue的值转换成byte[]类型
将string转换为byte[] Convert.FromBase64String(inputValue);
byte[] b = cmd.Parameters["@UserName"].value;从byte[]到string 的转化 需要提供编码类型
就是说你必须清楚 数据库中以binary形式存放的字符串是那种编码的一般就2种: System.Text.Encoding.Default
或者System.Text.Encoding.UTF8
可能都是用的UTF32byte[] b = cmd.Parameters["@UserName"].value;
string sUserName = Encoding.UTF32.GetString(b);
string sUserName = Encoding.UTF32.GetString(b);
错误 1 无法将类型“object”隐式转换为“byte[]”。存在一个显式转换(是否缺少强制转换?)
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[]”。存在一个显式转换(是否缺少强制转换?)
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[]”。存在一个显式转换(是否缺少强制转换?)
但是我把数据库的类型改成char时得到值是正确的,为什么用binary类型时就成为空了
但改成char类型时可以,如果是binary类型就出现不能将DBNull值转换在byte[]
你可以在强制转化前 单独判断一下是否为空
byte[] b =
(cmd.Parameters["@UserName"].value==null)?
new byte[0]:
(byte[])cmd.Parameters["@UserName"].value;
数据库:
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[]”