读书人

未将对象引用设置到对象实例

发布时间: 2012-05-12 15:39:31 作者: rapoo

求助:未将对象引用设置到对象实例

连接SQL2005,不知道错在哪,把里面数据库连接的代码贴了上来。

C# code
using System;using System.Linq;using System.Data.SqlClient;using System.Data;using System.ComponentModel;using System.Windows.Forms;namespace QQClass{    /// <summary>    /// ClassOptionData 的摘要说明。    /// </summary>    public class ClassOptionData : Component    {        private string ConStr = "Data Source=127.0.0.1;Database=db_MyQQ;User ID=sa;PWD=;";        public ClassOptionData()        {            //            // TODO: 在此处添加构造函数逻辑            //        }        public int ExSQL(string SQLStr)//执行任何SQL语句,返回所影响的行数        {            try            {                SqlConnection cnn = new SqlConnection(ConStr);                SqlCommand cmd = new SqlCommand(SQLStr, cnn);                cnn.Open();                int i = 0;                i = cmd.ExecuteNonQuery();                cmd.Dispose();                cnn.Close();                cnn.Dispose();                return i;            }            catch { return 0; }        }        public int ExSQLLengData(object Data, string par, string SQLStr)//执行任何SQL语句,返回所影响的行数        {            try            {                SqlConnection cnn = new SqlConnection(ConStr);                SqlCommand cmd = new SqlCommand(SQLStr, cnn);                cnn.Open();                int i = 0;                cmd.Parameters.Add(par, System.Data.SqlDbType.Binary);                i = cmd.ExecuteNonQuery();                cmd.Dispose();                cnn.Close();                cnn.Dispose();                return i;            }            catch { return 0; }        }        public int ExSQLR(string SQLStr)//执行任何SQL查询语句,返回所影响的行数        {            try            {                SqlConnection cnn = new SqlConnection(ConStr);                SqlCommand cmd = new SqlCommand(SQLStr, cnn);                cnn.Open();                SqlDataReader dr;                int i = 0;                dr = cmd.ExecuteReader();                while (dr.Read())                { i++; }                cmd.Dispose();                cnn.Close();                cnn.Dispose();                return i;            }            catch { return 0; }        }        public object ExSQLReField(string field, string SQLStr)//执行任何SQL查询语句,返回一个字段值        {            try            {                SqlConnection cnn = new SqlConnection(ConStr);                SqlCommand cmd = new SqlCommand(SQLStr, cnn);                cnn.Open();                SqlDataReader dr;                object fieldValue = null;                dr = cmd.ExecuteReader();                if (dr.Read())                { fieldValue = dr[field]; }                cmd.Dispose();                cnn.Close();                cnn.Dispose();                return fieldValue;            }            catch { return null; }        }        public SqlDataReader ExSQLReDr(string SQLStr)//执行任何SQL查询语句,返回一个SqlDataReader        {            try            {                SqlConnection cnn = new SqlConnection(ConStr);                SqlCommand cmd = new SqlCommand(SQLStr, cnn);                cnn.Open();                SqlDataReader dr;                dr = cmd.ExecuteReader();                return dr;            }            catch { return null; }        }    }}


[解决办法]
依次检查

OptionData.ExSQLReDr返回值
DataReader.GetInt32(索引)
这些是否为空
[解决办法]
你的代码需要改正
catch { return 0; }
catch { return null; }
都是不正确的写法
不能回避异常,到时候你会不知道你哪里出问题了
应该是
catch { throw; }//这里的异常需要在界面上去捕获

读书人网 >C#

热点推荐