Хранимая процедура для получения с использованием таблицы данных ASP.Net WebAPI - PullRequest
0 голосов
/ 15 октября 2018

может Кто-нибудь помочь мне исправить этот код ..

public static DataTable getCompartmentList(int module, string compID, string compDesc, string compType, string equipMake, string equipModel, string compMake, int compSize)
            {
                string cnnString = System.Configuration.ConfigurationManager.ConnectionStrings["TTDALConnection"].ConnectionString;
                DataTable dt = null;

                try
                {
                    SqlConnection cnn = new SqlConnection(cnnString);
                    SqlCommand cmd = new SqlCommand("spGetCompartmentsList", cnn);
                    cmd.CommandType = System.Data.CommandType.StoredProcedure;
                    cmd.CommandText = "spGetCompartmentsList";

                    cmd.Parameters.Add(new SqlParameter("@progid", module));

                    cmd.Parameters.Add(new SqlParameter("@compId", (object)compID ?? DBNull.Value));
                    cmd.Parameters.Add(new SqlParameter("@compDesc", (object)compDesc ?? DBNull.Value));
                    cmd.Parameters.Add(new SqlParameter("@compType", (object)compType ?? DBNull.Value));
                    cmd.Parameters.Add(new SqlParameter("@equipMake", (object)equipMake ?? DBNull.Value));
                    cmd.Parameters.Add(new SqlParameter("@equipModel", (object)equipModel ?? DBNull.Value));
                    cmd.Parameters.Add(new SqlParameter("@compMake", (object)compMake ?? DBNull.Value));
                    cmd.Parameters.Add(new SqlParameter("@compSize", (object)compSize ?? DBNull.Value));

                    cnn.Open();
                    SqlDataReader dr = cmd.ExecuteReader();
                    dt.Load(dr);
                    return dt;
                }
                catch
                {
                    throw;
                }

            }

Я изменил этот код для обработки исключения нулевой ссылки.

cmd.Parameters.Add(new SqlParameter("@progid", SqlDbType.Int).Value =  module);  

                if(compID == null)
                    cmd.Parameters.Add(new SqlParameter("@compId", SqlDbType.VarChar).Value = DBNull.Value);
                else
                    cmd.Parameters.Add(new SqlParameter("@compId", SqlDbType.VarChar).Value = compID);

                if (compDesc == null)
                    cmd.Parameters.Add(new SqlParameter("@compDesc", SqlDbType.VarChar).Value = DBNull.Value);
                else
                    cmd.Parameters.Add(new SqlParameter("@compDesc", SqlDbType.VarChar).Value = compDesc);

                if (compType == null)
                    cmd.Parameters.Add(new SqlParameter("@compType", SqlDbType.VarChar).Value = DBNull.Value);
                else
                    cmd.Parameters.Add(new SqlParameter("@compType", SqlDbType.VarChar).Value = compType);

                if (equipMake == null)
                    cmd.Parameters.Add(new SqlParameter("@equipMake", SqlDbType.VarChar).Value = DBNull.Value);
                else
                    cmd.Parameters.Add(new SqlParameter("@equipMake", SqlDbType.VarChar).Value = equipMake);

                if (equipModel == null)
                    cmd.Parameters.Add(new SqlParameter("@equipModel", SqlDbType.VarChar).Value = DBNull.Value);
                else
                    cmd.Parameters.Add(new SqlParameter("@equipModel", SqlDbType.VarChar).Value = equipModel);

                if (compMake == null)
                    cmd.Parameters.Add(new SqlParameter("@compMake", SqlDbType.VarChar).Value = DBNull.Value);
                else
                    cmd.Parameters.Add(new SqlParameter("@compMake", SqlDbType.VarChar).Value = compMake);
                    cmd.Parameters.Add(new SqlParameter("@compSize", SqlDbType.VarChar).Value = compSize);


                cnn.Open();
                SqlDataReader dr = cmd.ExecuteReader();
                dt.Load(dr);
                return dt;

----------------------------------------------- Это исключение после того, как изменил мой код-------

Исключение типа 'System.InvalidCastException' произошло в BLL.dll, но не было обработано в коде пользователя

Additional information: The SqlParameterCollection only accepts non-null SqlParameter type objects, not Int32 objects.

1 Ответ

0 голосов
/ 16 октября 2018

Это работает отлично.Спасибо всем за вашу поддержку и поддержку.

 public static DataTable getCompartmentList(int module, string compID, string compDesc, string compType, string equipMake, string equipModel, string compMake, int compSize)
            {
                string cnnString = System.Configuration.ConfigurationManager.ConnectionStrings["TTDALConnection"].ConnectionString;
                DataTable dt = new DataTable();
                using (SqlConnection con = new SqlConnection(cnnString))
                {
                    con.Open();
                    using (SqlCommand cmd = new SqlCommand())
                    {
                        cmd.Connection = con;
                        cmd.CommandType = CommandType.StoredProcedure;
                        cmd.CommandText = "spGetCompartmentsList";


                        cmd.Parameters.Add(new SqlParameter("@progid", module));
                        cmd.Parameters.Add(new SqlParameter("@compId", SqlDbType.VarChar));


                        if (compID == null)
                            cmd.Parameters["@compId"].Value = DBNull.Value;
                        else
                            cmd.Parameters["@compId"].Value = compID;

                        cmd.Parameters.Add(new SqlParameter("@compDesc", SqlDbType.VarChar));
                        if (compDesc == null)
                            cmd.Parameters["@compDesc"].Value = DBNull.Value;
                        else
                            cmd.Parameters["@compDesc"].Value = compDesc;

                        cmd.Parameters.Add(new SqlParameter("@compType", SqlDbType.VarChar));
                        if (compType == null)
                            cmd.Parameters["@compType"].Value = DBNull.Value;
                        else
                            cmd.Parameters["@compType"].Value = compType;

                        cmd.Parameters.Add(new SqlParameter("@equipMake", SqlDbType.VarChar));
                        if (equipMake == null)
                            cmd.Parameters["@equipMake"].Value = DBNull.Value;
                        else
                            cmd.Parameters["@equipMake"].Value = equipMake;

                        cmd.Parameters.Add(new SqlParameter("@equipModel", SqlDbType.VarChar));
                        if (equipModel == null)
                            cmd.Parameters["@equipModel"].Value = DBNull.Value;
                        else
                            cmd.Parameters["@equipModel"].Value = equipModel;

                        cmd.Parameters.Add(new SqlParameter("@compMake", SqlDbType.VarChar));
                        if (compMake == null)
                            cmd.Parameters["@compMake"].Value = DBNull.Value;
                        else
                            cmd.Parameters["@compMake"].Value = compMake;

                        cmd.Parameters.Add(new SqlParameter("@compSize", compSize));
                        using (SqlDataAdapter da = new SqlDataAdapter(cmd))
                        {
                            da.Fill(dt);
                        }
                    }
                }
                return dt;
            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...