C# 我只想更新数据库中文本框已启用的列,并保留已禁用的列的以前数据?
()图像链接 请查看图片以了解问题的更多说明,因为我知道我无法向您更清楚地说明 我只想更新那些由用户通过复选框选中的列的数据,那些未选中的列不会被NULL值更新 我的想法是使用511 if…else为不同的更新查询分别设置条件,但这是不可能实现的 到目前为止,更新代码如下:C# 我只想更新数据库中文本框已启用的列,并保留已禁用的列的以前数据?,c#,.net,visual-studio-2010,windows-applications,C#,.net,Visual Studio 2010,Windows Applications,()图像链接 请查看图片以了解问题的更多说明,因为我知道我无法向您更清楚地说明 我只想更新那些由用户通过复选框选中的列的数据,那些未选中的列不会被NULL值更新 我的想法是使用511 if…else为不同的更新查询分别设置条件,但这是不可能实现的 到目前为止,更新代码如下: else if(update_rdbtn.Checked) { FileStream fstream = new FileStream(this.imglocatio
else if(update_rdbtn.Checked)
{
FileStream fstream = new FileStream(this.imglocation_lbl.Text, FileMode.Open, FileAccess.Read);
BinaryReader br = new BinaryReader(fstream);
imgbtarray = br.ReadBytes((int)fstream.Length);
SqlConnection con = new SqlConnection("Data Source=JackSparrow-PC\\sqlexpress;Initial Catalog=HCE_DB;Integrated Security=True;Pooling=False");
SqlCommand cmd = new SqlCommand("Update StudentInfo SET Rollno='" + this.rollno_txtbox.Text + "',Student_Name='" + this.studname_txtbox.Text + "',F_name='" + this.fname_txtbox.Text + "',D_O_B='" + this.dob_txtbox.Text + "',Address='" + this.address_txtbox.Text + "',Phone='" + this.phone_txtbox.Text + "',Valid_upto='" + this.validupto_txtbox.Text + "',Image=@IMG,Branch='" + this.branch_txtbox.Text + "' WHERE Rollno='" + this.rollno_txtbox.Text + "';", con);
SqlDataReader myReader;
try
{
con.Open();
cmd.Parameters.Add(new SqlParameter("@IMG", imgbtarray));
myReader = cmd.ExecuteReader();
MessageBox.Show("Data has been updated");
myReader.Close();
con.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
已检查的无线电btn的代码已更改:
private void update_rdbtn_CheckedChanged(object sender, EventArgs e)
{
update_grpbox.Enabled = true;
studname_txtbox.Enabled = false;
fname_txtbox.Enabled = false;
dob_txtbox.Enabled = false;
branch_txtbox.Enabled = false;
address_txtbox.Enabled = false;
phone_txtbox.Enabled = false;
validupto_txtbox.Enabled = false;
Browse_btn.Enabled = false;
studname_chkbox.Checked = false;
fname_chkbox.Checked = false;
dob_chkbox.Checked = false;
branch_chkbox.Checked = false;
Address_chkbox.Checked = false;
phone_chkbox.Checked = false;
validupto_chkbox.Checked = false;
Uploadimg_chkbox.Checked = false;
}
复选框的代码:
private void studname_chkbox_CheckedChanged(object sender, EventArgs e)
{
if (!studname_chkbox.Checked)
{
studname_txtbox.Enabled = false;
}
else
{
studname_txtbox.Enabled = true;
}
}
private void fname_chkbox_CheckedChanged(object sender, EventArgs e)
{
if (!fname_chkbox.Checked)
{
fname_txtbox.Enabled = false;
}
else
{
fname_txtbox.Enabled = true;
}
}
private void dob_chkbox_CheckedChanged(object sender, EventArgs e)
{
if (!dob_chkbox.Checked)
{
dob_txtbox.Enabled = false;
}
else
{
dob_txtbox.Enabled = true;
}
}
private void branch_chkbox_CheckedChanged(object sender, EventArgs e)
{
if (!branch_chkbox.Checked)
{
branch_txtbox.Enabled = false;
}
else
{
branch_txtbox.Enabled = true;
}
}
private void Address_chkbox_CheckedChanged(object sender, EventArgs e)
{
if (!Address_chkbox.Checked)
{
address_txtbox.Enabled = false;
}
else
{
address_txtbox.Enabled = true;
}
}
private void phone_chkbox_CheckedChanged(object sender, EventArgs e)
{
if (!phone_chkbox.Checked)
{
phone_txtbox.Enabled = false;
}
else
{
phone_txtbox.Enabled = true;
}
}
private void validupto_chkbox_CheckedChanged(object sender, EventArgs e)
{
if (!validupto_chkbox.Checked)
{
validupto_txtbox.Enabled = false;
}
else
{
validupto_txtbox.Enabled = true;
}
}
private void Uploadimg_chkbox_CheckedChanged(object sender, EventArgs e)
{
if (!Uploadimg_chkbox.Checked)
{
Browse_btn.Enabled = false;
}
else
{
Browse_btn.Enabled = true;
}
}
好吧,我建议你改变,在datagrid中编辑,不在带有文本框的表单中。在datagridview中有一个名为“CellEndEdit”的事件,我认为它可以解决您的问题XX@Dietrich来回复,但我已经使用sqlreader解决了这个问题,在它被最新数据更新之前读取以前的数据,并将该数据存储到不同的字符串类型变量中,对于图像,我使用字节数组,如果(!sname\u chkbox.checked)使用它从存储的变量获取数据…否则使用用户输入更新数据我还有一个查询,即我在c#中开发了一个windows应用程序,其中包含两个表Admin和StudentInfo的HCE#U DB.mdf文件每当我单击一个按钮将数据存储到数据库中时,mycommand就会成功执行,并在我将数据加载到数据库时显示数据添加成功在datagridview中查看,它还显示了我添加的数据。但当我关闭应用程序并再次启动时,所有数据都丢失了。。。。请帮帮我