首页新闻找找看学习计划

如何将NULL值插入数据库

0
悬赏园豆:15 [已解决问题] 解决于 2013-03-23 10:28

C#,INT类型,可空,比如 private int price;public Price{get;set;}

  public int Add()
        {
            string sql = @"INSERT INTO Table(price)  values(@price);SELECT SCOPE_IDENTITY()";

 SqlParameter[] para = new SqlParameter[]
    {
     new SqlParameter("@price",SqlDbType.Int,4),

}

para[0].value=price;

现在想price为NULL插入到数据库,C#语句如何给price赋值?

当然以上只是示例代码,还有其它的值一起插入。

c#
happydaily的主页 happydaily | 小虾三级 | 园豆:544
提问于:2013-03-16 16:32
< >
分享
最佳答案
0

int?

收获园豆:5
ackamen | 初学一级 |园豆:1 | 2013-03-16 17:06

可空类型可以解决这个问题,但是我很好奇在可空类型出来之前是怎么用的

happydaily | 园豆:544 (小虾三级) | 2013-03-16 17:38
其他回答(4)
0

DBNull.Value试试。

清海扬波 | 园豆:813 (小虾三级) | 2013-03-16 16:53

 price= int.Parse(DBNull.Value.ToString());

报错

支持(0) 反对(0) happydaily | 园豆:544 (小虾三级) | 2013-03-16 17:05

@happydaily: 取数的时候肯定不能这么取了。

支持(0) 反对(0) 清海扬波 | 园豆:813 (小虾三级) | 2013-03-16 17:47

@happydaily: 直接 

c.Parameters.AddWithValue("price", DBNull.Value);

支持(0) 反对(0) 陈希章 | 园豆:2338 (老鸟四级) | 2013-03-17 08:23
0

如下操作:

1 string myname = textBox1.Text;
2             string pri = textBox2.Text;
3             SqlConnection con = new SqlConnection("server=.;database=Test;integrated security=true;");
4             con.Open();
5             SqlCommand cmd = new SqlCommand("insert into aa(name,price)  values('"+myname+"','"+pri+"')", con);
6             cmd.ExecuteNonQuery();

运行结果:

收获园豆:10
伏草惟存 | 园豆:1420 (小虾三级) | 2013-03-16 17:59

必须三层

支持(0) 反对(0) happydaily | 园豆:544 (小虾三级) | 2013-03-17 08:27

@happydaily: 

完整操作如下;代码测试后完全没问题。

DAL:

View Code
namespace DAL
{
    public class Class1
    {
        public bool Insert(string myname,int? pri)
        {
            SqlConnection con = new SqlConnection("server=.;database=Test;integrated security=true;");
            con.Open();
            SqlCommand cmd = new SqlCommand("insert into aa(name,price)  values('" + myname + "','" + pri + "')", con);
            int i = cmd.ExecuteNonQuery();
            if (i > 0)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
         
    }
}

BLL:

View Code
namespace BLL
{
    public class Class1
    {
        public bool BLLInsert(string myname, int? pri)
        {
            DAL.Class1 dc = new DAL.Class1();
            return dc.Insert(myname, pri);
        }
    }
}

UI层:

View Code
private void button1_Click(object sender, EventArgs e)
        {
            string myname = textBox1.Text;
            int? pri;
            if (textBox2.Text == "")
            {
                pri = null;
            }
            else
            {
                pri = Convert.ToInt32(textBox2.Text);
            }
           
            BLL.Class1 bc = new Class1();
            bool fale=bc.BLLInsert(myname, pri);
            if (fale == true)
            {
                //显示数据的方法
                this.BD();
            }
            else
            {
                MessageBox.Show("不合法输入!");
            }
        }
支持(0) 反对(0) 伏草惟存 | 园豆:1420 (小虾三级) | 2013-03-17 11:26
0

如果你的字段允许空值,不管他就行。

顾晓北 | 园豆:9530 (大侠五级) | 2013-03-18 10:00
0

我觉得Delete ,insert 就行了

-笨笨- | 园豆:240 (菜鸟二级) | 2013-03-19 11:10
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册