public static SqlDataReader ExcuteRead(string nText, CommandType nType, SqlParameter[] paras)
{
SqlConnection conn = new SqlConnection(strConn);
SqlCommand cmd = new SqlCommand();
try
{
PrepareCommand(conn, cmd, null, nType, nText, paras);
SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
cmd.Parameters.Clear();
return dr;
}
catch (SqlException ex)
{
throw new Exception(ex.Message, ex);
}
} public static int ExcuteNonQurey(string nText, CommandType nType, SqlParameter[] paras)
{
SqlCommand cmd = new SqlCommand();
using (SqlConnection conn = new SqlConnection(strConn))
{
PrepareCommand(conn, cmd, null, nType, nText, paras);
int rows = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
return rows;
}
} public static object ExcuteSclare(string nText, CommandType nType, SqlParameter[] paras)
{
SqlCommand cmd = new SqlCommand();
using (SqlConnection conn = new SqlConnection(strConn))
{
PrepareCommand(conn, cmd, null, nType, nText, paras);
object obj = cmd.ExecuteScalar();
cmd.Parameters.Clear();
return obj;
}
}
这个是别人的代码
问:
他咋不在ExcuteSclare中用TRY -CATCH语句呢?而用了个USING
{
SqlConnection conn = new SqlConnection(strConn);
SqlCommand cmd = new SqlCommand();
try
{
PrepareCommand(conn, cmd, null, nType, nText, paras);
SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
cmd.Parameters.Clear();
return dr;
}
catch (SqlException ex)
{
throw new Exception(ex.Message, ex);
}
} public static int ExcuteNonQurey(string nText, CommandType nType, SqlParameter[] paras)
{
SqlCommand cmd = new SqlCommand();
using (SqlConnection conn = new SqlConnection(strConn))
{
PrepareCommand(conn, cmd, null, nType, nText, paras);
int rows = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
return rows;
}
} public static object ExcuteSclare(string nText, CommandType nType, SqlParameter[] paras)
{
SqlCommand cmd = new SqlCommand();
using (SqlConnection conn = new SqlConnection(strConn))
{
PrepareCommand(conn, cmd, null, nType, nText, paras);
object obj = cmd.ExecuteScalar();
cmd.Parameters.Clear();
return obj;
}
}
这个是别人的代码
问:
他咋不在ExcuteSclare中用TRY -CATCH语句呢?而用了个USING
解决方案 »
- ◆带变量的通配符如何写法◆
- 老掉牙的问题了 不好意思问了 但是我还没解决
- DataGridView添加时间控件
- 书上的一个程序,自己存在几个疑问,希望大家指点下。
- 问个简单的按回车键问题
- C#2.0如何调用Surfer8.0的Automation对象
- 奇怪!奇怪!.Net 写文件 BUG!!!
- 请问我怎么实现这样的功能,得到droplist控件里面的值,然后跳到具体的页
- 连开两贴200分,求Visual C#.Net 从入门到精通 电子版
- 请高人指点,如何给dataGrid中的某个单元格赋值
- GridView中将数据下载到excel中如何显示18位长度已上的数值,excel默认的是15位
- 如何在NET里同一页面里一同的按钮验证不同的TextBox
是将数据库的连接引入,否则执行此方法时会报错的。
为什么就不用TRY - CATCH呢
而用那个USING难道那个ExcuteSclare不需要捕获异常
详细点吧
他哪里有捕获
这个ExcuteSclare方法就那点还有用这个ExcuteSclare方法需要捕获异常吗
需要吗
不需要吗
要达到这样的目的,用try...catch来捕捉异常也是可以的,但用using也很方便。
例如:
using (Class1 cls1 = new Class1(), cls2 = new Class1())
{
// the code using cls1, cls2
} // call the Dispose on cls1 and cls2
这里触发cls1和cls2的Dispose条件是到达using语句末尾或者中途引发了异常并且控制离开了语句块。
例如:using System; 一般都会出现在*.cs中。2.using别名。using + 别名 = 包括详细命名空间信息的具体的类型。
这种做法有个好处就是当同一个cs引用了两个不同的命名空间,但两个命名空间都包括了一个相同名字的类型的时候。当需要用到这个类型的时候,就每个地方都要用详细命名空间的办法来区分这些相同名字的类型。而用别名的方法会更简洁,用到哪个类就给哪个类做别名声明就可以了。注意:并不是说两个名字重复,给其中一个用了别名,另外一个就不需要用别名了,如果两个都要使用,则两个都需要用using来定义别名的。例如:
using System;
using aClass = NameSpace1.MyClass;
using bClass = NameSpace2.MyClass;namespace NameSpace1
{
public class MyClass
{
public override string ToString()
{
return "You are in NameSpace1.MyClass";
}
}
}namespace NameSpace2
{
class MyClass
{
public override string ToString()
{
return "You are in NameSpace2.MyClass";
}
}
}namespace testUsing
{
using NameSpace1;
using NameSpace2;
/// <summary>
/// Class1 的摘要说明。
/// </summary>
class Class1
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args)
{
//
// TODO: 在此处添加代码以启动应用程序
//
aClass my1 = new aClass();
Console.WriteLine(my1);
bClass my2 = new bClass();
Console.WriteLine(my2);
Console.WriteLine("Press any key");
Console.Read();
}
}
}
3.using语句,定义一个范围,在范围结束时处理对象。
场景:
当在某个代码段中使用了类的实例,而希望无论因为什么原因,只要离开了这个代码段就自动调用这个类实例的Dispose。
要达到这样的目的,用try...catch来捕捉异常也是可以的,但用using也很方便。
例如:
using (Class1 cls1 = new Class1(), cls2 = new Class1())
{
// the code using cls1, cls2
} // call the Dispose on cls1 and cls2
这里触发cls1和cls2的Dispose条件是到达using语句末尾或者中途引发了异常并且控制离开了语句块
只能保证对象会被进行关闭、释放资源。而用try...catch能处理各种异常情况
{ExcuteSclare();}
catch(Exception e)
{//这里可以捕获到ExcuteSclare中的异常吧??
MessageBox.Show(e.Message);
}
try{}finnally{*.Dispose();}
另外:
catch (SqlException ex)
{
throw new Exception(ex.Message, ex);
}
这个代码是不规范的:
改成:
catch
{
throw;
}
ExcuteSclare
ExcuteSclare
ExcuteSclare
ExcuteSclare
ExcuteSclare明白了一点代码是别人写的
其实我的意思是
ExcuteSclare这个这个是这个方法中为什么不用try-catch语句
而用了using
我知道ExcuteSclare中using的意思是“只要离开了这个代码段就自动调用这个类实例的Dispose”
也就是关闭连接不用try-catch
是不需要抛出异常吗还是他没有编写上?
用不用 try catch 就是异常处理(Execption Handling)的问题了,有其他的指导原则。
比如尽量不要随便吞掉异常(catch 了而不作处理,单纯为了不向用户显示警告框),不要在出错信息中暴露文件路径等敏感信息什么的。