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赋值?
当然以上只是示例代码,还有其它的值一起插入。
int?
可空类型可以解决这个问题,但是我很好奇在可空类型出来之前是怎么用的
DBNull.Value试试。
price= int.Parse(DBNull.Value.ToString());
报错
@happydaily: 取数的时候肯定不能这么取了。
@happydaily: 直接
c.Parameters.AddWithValue("price", DBNull.Value);
如下操作:
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();
运行结果:
必须三层
@happydaily:
完整操作如下;代码测试后完全没问题。
DAL:
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:
namespace BLL { public class Class1 { public bool BLLInsert(string myname, int? pri) { DAL.Class1 dc = new DAL.Class1(); return dc.Insert(myname, pri); } } }
UI层:
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("不合法输入!"); } }
如果你的字段允许空值,不管他就行。
我觉得Delete ,insert 就行了