ADO.NET编程小错误

好久没有用ADO.NET和SQL Server打交道了,上一个用了数据库的项目还是用的Linq to SQL. 今天写个小东西用了数据库,居然两次在非常傻的错误上翻了跟头。上网一查,发现和我一样的人还不少,于是就总结上来吧,以免再犯。

错误一:ExecuteNonQuery (或者ExecuteReader): Connection property has not been initialized

网上提到的原因众说纷纭,最后还是我自己发现了问题所在,如下代码中有何问题?

using (SqlConnection conn = SqlHelper.GetSqlConnection())

{

    conn.Open ();

    //Create table.

    using (SqlCommand cmd = new SqlCommand (_cmdCreateTable))

    {

        cmd.ExecuteNonQuery ();

    }

}
估计一下子还真不容易看出来,那就是
new SqlCommand (_cmdCreateTable)
缺少第二个参数:SqlConnection!

错误二:过程或函数 'xxx' 需要参数 '@xxx',但未提供该参数

这个可能原因就更多了,不过到后来我都排除了,最后发现是没有将SqlCommand对象的CommandType设为StoredProcedure! 真是囧了。不过还是挺奇怪的,毕竟没有设的话默认是Text,也就是说它会将存储过程名称当做SQL语句,那此时应该是它不需要参数而我给了参数(原本要传给存储过程的),所以这个错误信息实在是。。。

你可能感兴趣的:(.net)