【问题标题】:How to insert Empty Text Box value into SQL 2008 database, through stored procedure?如何通过存储过程将空文本框值插入 SQL 2008 数据库?
【发布时间】:2014-09-30 06:27:33
【问题描述】:

我正在尝试通过存储过程将空文本框值插入数据库。但我确实这样做了 不知道如何通过存储过程传递空值请帮助我。我的班级是

public Void empqualadd(string id, string name, string qual1)   
  {
SqlCommand cmd = new SqlCommand("InsertQual");
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@MachID", SqlDbType.Int).Value = id;
cmd.Parameters.Add("@EmpCode", SqlDbType.VarChar).Value = name;
cmd.Parameters.Add("@Qualification1", SqlDbType.VarChar).Value = qual1;
conn.nonquery(cmd);
  }

我的按钮点击是,

protected void Button1_Click(object sender, EventArgs e)
  { 
 mas.empqualadd(ddis.SelectedItem.Text,
 txtfname.Text,ddqual.SelectedItem.Text);        
  }

我也有一个连接类,

public Connection()
   {
        conn = new SqlConnection(@"server=SIGNET- SOFTWARE\SA;database=manjilas;Integrated security=true");
        cmd = null;
   }
public void nonquery(SqlCommand cmd)//for insert,delete,update
   {
if (conn.State == ConnectionState.Open)
   {
conn.Close();
   }
conn.Open();
cmd.Connection = conn;
cmd.ExecuteNonQuery();
conn.Close();
   }

如果文本框不为空,它可以正常插入数据。我应该在类中进行哪些更改以传递空值? 请帮助我。在此先感谢....

【问题讨论】:

  • 据我所知,您的代码中有很多错误。 1) 如果我们看到InsertQual sp 的定义会更好。 2) 它是ExecuteNonQuery 而不是nonquery。 3) 你的empqualadd 方法甚至没有返回任何string

标签: c#


【解决方案1】:

试试这个

cmd.Parameters.Add("@MachID", SqlDbType.Int).Value = string.IsNullOrEmpty(id) ? (object)DbNull.Value : id;

当列数据类型为 int 时,为什么还要传递字符串值?

【讨论】:

  • Nitin Varpe,错误 13 条件表达式的类型无法确定,因为 'System.DBNull' 和 'string' 之间没有隐式转换。
  • 如果解决了您的问题,您可以接受它作为答案!
【解决方案2】:

这也很好用。

if(!string.IsNullOrWhiteSpace(qual2)&!string.IsNullOrWhiteSpace(clg2)&!string.IsNullOrWhiteSpace(mark2)&!string.IsNullOrWhiteSpace(year2))                             
          {
            cmd.Parameters.Add("@Qualification2", SqlDbType.VarChar).Value = qual2.Length > 0 ? qual2 : (object)DBNull.Value;
            cmd.Parameters.Add("@College2", SqlDbType.VarChar).Value = clg2.Length > 0 ? clg2 : (object)DBNull.Value;
            cmd.Parameters.Add("@Mark2", SqlDbType.Int).Value = mark2.Length > 0 ? mark2 : (object)DBNull.Value;
            cmd.Parameters.Add("@Year2", SqlDbType.VarChar).Value =year2.Length > 0 ? year2 : (object)DBNull.Value;
            conn.nonquery(cmd);
          }

【讨论】:

    猜你喜欢
    • 2012-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多