源错误:
行 21: {
行 22: string strcmd = "select dirflg from picturedetails where id=" + strid;
行 23: return Boolean.Parse(DBUtil.SqlExecuteScalar(strcmd).ToString());行 24: }
行 25: public static DataTable getpicturedetails()
源文件: d:\校园一点通\App_Code\DBUtil_Picture.cs 行: 23
那位高手帮忙我看一下上面的错误出在哪? 多谢了 其中类DBUtil的部分代码如下:
public static object SqlExecuteScalar(SqlCommand objcommand)
{
SqlConnection objconnection = new SqlConnection(strconnect);
objcommand.Connection = objconnection;
try
{
if (objconnection.State == ConnectionState.Closed)
{
objconnection.Open();
}
return objcommand.ExecuteScalar();
}
catch (Exception e)
{
throw e;
}
finally
{
if (objconnection.State == ConnectionState.Open)
{
objconnection.Close();
}
}
}
public static object SqlExecuteScalar(string strcmd)
{
SqlCommand obj = new SqlCommand(strcmd);
return SqlExecuteScalar(obj);
}
表picturedetails有6个字段,id(int) name(varchar(200)) url(varchar(500))
dirflg(bit) parentid(int) creatdate(datetime)
就url可以为空值,其余的都不可以为空
我在表中用SQL 2005 就插入了一个元组id=1 name=root url=null dirflg是bool型的我输了一个数字“1”
行 21: {
行 22: string strcmd = "select dirflg from picturedetails where id=" + strid;
行 23: return Boolean.Parse(DBUtil.SqlExecuteScalar(strcmd).ToString());行 24: }
行 25: public static DataTable getpicturedetails()
源文件: d:\校园一点通\App_Code\DBUtil_Picture.cs 行: 23
那位高手帮忙我看一下上面的错误出在哪? 多谢了 其中类DBUtil的部分代码如下:
public static object SqlExecuteScalar(SqlCommand objcommand)
{
SqlConnection objconnection = new SqlConnection(strconnect);
objcommand.Connection = objconnection;
try
{
if (objconnection.State == ConnectionState.Closed)
{
objconnection.Open();
}
return objcommand.ExecuteScalar();
}
catch (Exception e)
{
throw e;
}
finally
{
if (objconnection.State == ConnectionState.Open)
{
objconnection.Close();
}
}
}
public static object SqlExecuteScalar(string strcmd)
{
SqlCommand obj = new SqlCommand(strcmd);
return SqlExecuteScalar(obj);
}
表picturedetails有6个字段,id(int) name(varchar(200)) url(varchar(500))
dirflg(bit) parentid(int) creatdate(datetime)
就url可以为空值,其余的都不可以为空
我在表中用SQL 2005 就插入了一个元组id=1 name=root url=null dirflg是bool型的我输了一个数字“1”
解决方案 »
- WPF textbox
- checkedListBox1 填充过程出错,请帮助看一下!
- 请问timer组件是怎么用的
- “system.data.sqlclient.sqlexception”并不包含“CommandText”的定义。这是为什么啊?
- 如何使用ComponentArt.Web.UI中treeview控件绑定站点地图
- 窗口FormBorderStyle设为fixedtoolwindow
- 网络传输中,被传输string的编解码问题,望各位赐教!
- 类中传值的问题
- 关于与数据库连接的问题
- 有用过wise for .net做过安装包的吗?有很多问题啊
- 提示:“跨執行緒作業無效: 存取控制項 'StopThis' 時所使用的執行緒與建立控制項的執行緒不同。”如何解决能够存取此控件?
- 请教:c#程序运行时控件不见了,不管是加label还是button都一样。
你在使用tostring就变成了"0"或者"1";再使用
Boolean.Parse(“1”);或者Boolean.Parse(“0”);就不对了,Boolean只接受"true"或者"false"作为参数。你可以试试解析成intreturn int.Parse(DBUtil.SqlExecuteScalar(strcmd).ToString())==0?false:true ;
注意上面是C#的语法.
return Boolean.Parse(DBUtil.SqlExecuteScalar(strcmd));
应该就可以了。
纠正一下,ExecuteScalar在没有找到记录时返回null。在找到记录但是记录为空值时返回dbnull。
这段代码确实会造成很多问题。
可以用try catch住,这样可以看的到详细错误
估计是DBNull.Value的问题。
可以用bool.tryparse();
不是转换类型的问题,
可以推断,可能是返回了Null,未实例化对象,抛出的异常,
我觉得一个是不是应该写一个CheckObject的类,SafeBool(object ob)这样的一个方法,就不会出现这样的情况了,把转换封装在CheckObject类中!
/// <summary>
/// 转换对象到布尔型
/// </summary>
/// <param name="obj"></param>
/// <returns></returns>
public static bool SafeBool(object obj)
{
return (obj != null) ? SafeBool(obj.ToString()) : false; }
/// 验证是否为Bool类型
/// </summary>
/// <param name="ob"></param>
/// <returns></returns>
public static bool IsBool(object ob)
{
try
{
bool.Parse(ob.ToString());
return true;
}
catch
{
return false;
}
}