110,539
社区成员
发帖
与我相关
我的任务
分享
private void 查询_Click(object sender, EventArgs e)
{
SqlConnection sqlcon = new SqlConnection("server=WIN7U-20151010U;uid=sa;pwd=gsa4tb;database=xsxxdb");
SqlDataAdapter sda = new SqlDataAdapter();
try
{
if (ds.HasChanges())
{
sqlcon.Open();
//用SqlCommandBuilder自动为SqlDataAdapter生成Insert、Update、Delete命令
SqlCommandBuilder cb = new SqlCommandBuilder(sda);
sda.Update(ds);
dataGridView1.Update();
MessageBox.Show("保存成功!");
sqlcon.Close();
}
}
catch
{
MessageBox.Show("数据错误");
}
}
private void 查询_Click(object sender, EventArgs e)
{
SqlConnection sqlcon = new SqlConnection("server=WIN7U-20151010U;uid=sa;pwd=gsa4tb;database=xsxxdb");
SqlDataAdapter sda = new SqlDataAdapter();
try
{
if (ds.HasChanges())
{
sqlcon.Open();
//用SqlCommandBuilder自动为SqlDataAdapter生成Insert、Update、Delete命令
//SqlCommandBuilder cb = new SqlCommandBuilder(sda);
//把上面这句注释掉,改成下面这样:
sda.UpdateCommand = new SqlCommand(
"Insert into CJ(ID, Name, 时间, Result) values( @ID, @Name, @时间, @Result) " , conn);
sda.UpdateCommand.Parameters.Add... //在这里添加命令的参数,就像你上面初始化sda的那样
//因为你在datagridview中对几个日期列的更改,反映在数据库中实际上是做插入处理的,所以在它的
// UpdateCommand中要手动的写好sql语句,你也可以在数据库中预先写好存储过程,然后在UpdateCommand
//中调用就行了
sda.Update(ds);
dataGridView1.Update();
MessageBox.Show("保存成功!");
sqlcon.Close();
}
}
catch
{
MessageBox.Show("数据错误");
}
}
//更改datagridview单元格内容
public void cellchange(DataGridView dgv, OleDbDataAdapter da, DataTable dte)
{
if (Interaction.MsgBox("是否修改该数据?", Constants.vbQuestion + Constants.vbYesNo) == Constants.vbYes) {
builder = new OleDbCommandBuilder(da);
dte.Rows.Find(dgv(dgv.DataSource.PrimaryKey(0).ToString, dgv.CurrentRow.Index).Value)(dgv.CurrentCell.ColumnIndex) = dgv.CurrentCell.Value;
da.Update(dte);
//conn.Open()
//cmd = New OleDbCommand("update " & dgv.DataSource.ToString & " set " & dgv.Columns(dgv.CurrentCell.ColumnIndex).HeaderText & "=" & If(IsDBNull(dgv.CurrentCell.Value), "NULL", "'" & dgv.CurrentCell.Value & "'") & " where " & dgv.DataSource.PrimaryKey(0).ToString & "=" & dgv(dgv.DataSource.PrimaryKey(0).ToString, dgv.CurrentRow.Index).Value, conn)
//cmd.ExecuteNonQuery()
//conn.Close()
} else {
dgv.DataSource.RejectChanges();
}
}
SqlConnection conn = new SqlConnection("server=WIN7U-20151010U;uid=sa;pwd=gsa4tb;database=xsxxdb");
// sda = new SqlDataAdapter("SELECT * FROM CJ where 科室='"+comboBox1.Text.ToString()+"' ", conn);
SqlCommand cmd = new SqlCommand("dy ", conn);
cmd.CommandType = CommandType.StoredProcedure;//
cmd.Parameters.Add("@mm", SqlDbType.VarChar, 100).Value = comboBox1.Text;
cmd.Parameters.Add("@nn", SqlDbType.VarChar, 100).Value = dateTimePicker1.Value.ToShortDateString();
cmd.Parameters.Add("@aa", SqlDbType.VarChar, 100).Value = dateTimePicker2.Value.ToShortDateString();
sda = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
ds.Clear();
sda.Fill(ds);
dataGridView1.DataSource = ds.Tables[0];
dataGridView1.Show();
// dataGridView1.Columns[0].Visible = false;
dataGridView1.Rows[0].Selected = false;
SQLCOMMANDBULIDER(数据更新按钮):
SqlConnection sqlcon = new SqlConnection("server=WIN7U-20151010U;uid=sa;pwd=gsa4tb;database=xsxxdb");
try
{
if (ds.HasChanges())
{
sqlcon.Open();
//用SqlCommandBuilder自动为SqlDataAdapter生成Insert、Update、Delete命令
SqlCommandBuilder cb = new SqlCommandBuilder(sda);
sda.Update(ds);
dataGridView1.Update();
MessageBox.Show("保存成功!");
sqlcon.Close();
}
}
catch
{
MessageBox.Show("数据错误");
}
问题其实找到了,在数据库中的表是这个样子的:
我将本来应该以一列形式显示的时间转换成以一行的形式显示,那么在datagridview中添加数据的时候估计是insertcommand在数据表中找不到例如2016/3/21这个字段,所以即使添加了数据库里也保存不了。求各位大哥给我一点帮助
@熊猫rrr
@qq_26456659