C#中往資料庫插入空值報錯解決方案

來源:互聯網
上載者:User

標籤:style   color   io   os   ar   for   資料   sp   c   

C#中的NUll於SQL中的null是不一樣的, SQL中的null用C#表示出來就是DBNull.Value

 

class SqlHerper
    {
        private static readonly string connStr = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString;

        //封裝執行增刪改 只有執行insert updata delete 語句的時候返回受影響的行數,select 永遠返回的是-1
        public static int ExecuteNonQuery(string sql, CommandType cmdType, params SqlParameter[] parameters)
        {
            using(SqlConnection conn =new SqlConnection(connStr))
            {
                using (SqlCommand com = new SqlCommand(sql, conn))
                {
                    com.CommandType = cmdType;
                    if (parameters != null)
                    {
                        foreach (SqlParameter spr in parameters)
                        {
                            if (spr.SqlValue == null)
                            {
                                spr.SqlValue = DBNull.Value;  //C#中的NUll於SQL中的null是不一樣的, SQL中的null用C#表示出來就是DBNull.Value
                            }
                            com.Parameters.Add(spr);
                        }
                        //com.Parameters.AddRange(parameters);
                    }
                    conn.Open();
                    return com.ExecuteNonQuery();
                }
            }
        }
        //封裝返回單個值的方法 只返回第一行第一列
        public static object ExecuteScalar(string sql, CommandType cmdType, params SqlParameter[] parameters)
        {
            using (SqlConnection conn = new SqlConnection(connStr))
            {
                using (SqlCommand com = new SqlCommand(sql, conn))
                {
                    com.CommandType = cmdType;
                    if (parameters != null)
                    {
                        com.Parameters.AddRange(parameters);
                    }
                    conn.Open();
                    return com.ExecuteScalar();
                }
            }
        }
        //返回SqlDataReader對象的方法
        public static SqlDataReader ExecuteReader(string sql, CommandType cmdType, params SqlParameter[] parameters)
        {
            SqlConnection conn = new SqlConnection(connStr); //Connection 不能using 因為返回SqlDataReader對象時要保證conn串連時開啟狀態的。
            using (SqlCommand com = new SqlCommand(sql, conn))
            {
                com.CommandType = cmdType;
                if (parameters != null)
                {
                    com.Parameters.AddRange(parameters);
                }
                try
                {
                    conn.Open();
                    //CommandBehavior.CloseConnection 當關閉DataReader對象時,也自動關閉關聯的Connection對象。
                    return com.ExecuteReader(CommandBehavior.CloseConnection);
                }
                catch (Exception)
                {
                    conn.Dispose();
                    throw;
                }
            }
        }
        //返回DataTable對象的方法
        public static DataTable ExecuteDataTable(string sql, CommandType cmdType, params SqlParameter[] parameters)
        {
            DataTable dt = new DataTable();
            using (SqlDataAdapter adapter = new SqlDataAdapter(sql, connStr))
            {
                adapter.SelectCommand.CommandType = cmdType;
                if (parameters != null)
                {
                    adapter.SelectCommand.Parameters.AddRange(parameters);
                }
                adapter.Fill(dt);
            }
            return dt;
        }
    }

C#中往資料庫插入空值報錯解決方案

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.