怎么更新不了数据库

hanghaigood 2008-07-08 12:25:53
代码如下:
private void btnReturn_Click(object sender, EventArgs e)
{
DataSet ds = new DataSet();
string strsql = "select * from BorrowBook";
SqlDataAdapter da = new SqlDataAdapter(strsql,this.sqlConnection1);
da.Fill(ds, "还书表");
SqlCommandBuilder sqlcdb = new SqlCommandBuilder(da);
ds.Tables["还书表"].PrimaryKey = new DataColumn[] { ds.Tables["还书表"].Columns["ID"] };
for (int i = 0; i < ds.Tables["还书表"].Rows.Count; i++)
{
if (ds.Tables["还书表"].Rows[i]["ReaderID"].ToString() == this.textReaderID.Text && ds.Tables["还书表"].Rows[i]["BookID"].ToString() == this.textBookID.Text)
{
int dday = System.DateTime.Today.DayOfYear - ((System.DateTime)ds.Tables["还书表"].Rows[i]["ReturnDate"]).DayOfYear;
ds.Tables["还书表"].Rows[i]["FactReturnDate"] = System.DateTime.Today;
da.Update(ds,"还书表");
ds.AcceptChanges();
if (dday > 0)
{
MessageBox.Show(this.textInformation.Text = this.textReaderID.Text + "读者你的" + this.textBookID.Text + "图书已经过期" + Convert.ToString(dday)
+ "天,罚款" + Convert.ToString(dday / 10) + "元RMB", "过期", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);
}
}

}
ReturnBook(this.textBookID.Text);
ReturnReader(this.textReaderID.Text);
this.textInformation.Text = this.textReaderID.Text + "归还图书" + this.textBookID.Text + "成功";
}

以上代码是想实现更新数据表“BorrowBook”中的FactReturnDate字段,通过“ds.Tables["还书表"].Rows[i]["FactReturnDate"] = System.DateTime.Today;”来获取系统时间,但是通过以上这个函数却更新不了,不知道哪里出错了?
...全文
165 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
hanghaigood 2008-07-09
  • 打赏
  • 举报
回复
前面有段代码差不多一样的,但是却可以更新数据库.
代码如下:
private bool BorrowReader(string textReaderID)
{
if (ReaderBorrowedNumber(textReaderID) < 8)
{
this.sqlConnection1.Open();
DataSet ds = new DataSet();
string strsql = "select * from Reader";
SqlDataAdapter da = new SqlDataAdapter(strsql, this.sqlConnection1);
da.Fill(ds, "读者表");
ds.Tables["读者表"].PrimaryKey = new DataColumn[] { ds.Tables["读者表"].Columns["ReaderID"] };
for (int i = 0; i < ds.Tables["读者表"].Rows.Count; i++)
{
if (ds.Tables["读者表"].Rows[i]["ReaderID"].ToString() == textReaderID)
{
ds.Tables["读者表"].Rows[i]["ReaderBorrowedbooks"] =Convert.ToInt32(ds.Tables["读者表"].Rows[i]["ReaderBorrowedbooks"]) + 1;
}
}
SqlCommandBuilder aqlcdb = new SqlCommandBuilder(da);
da.Update(ds, "读者表");
ds.AcceptChanges();
this.sqlConnection1.Close();
return true;
}
else
return false;
}
hanghaigood 2008-07-09
  • 打赏
  • 举报
回复
ddkc_c ,我不是很明白你的说法,你提供的代码应该怎样用到我的代码中呢?
DalyQiao 2008-07-09
  • 打赏
  • 举报
回复
应该是没有建立表映射与列映射的原因,像下面这样试试
          MSSQLConn conn = DBConn.MSSQL;
SqlConnection m_conn = conn.Conn;

SqlCommand UpdateH = new SqlCommand("t_BJ_BJUpdate", m_conn);
UpdateH.CommandType = CommandType.StoredProcedure;
SqlCommand insertM = new SqlCommand("t_BJ_BJsInsert", m_conn);
insertM.CommandType = CommandType.StoredProcedure;
SqlDataAdapter sda = new SqlDataAdapter();
sda.InsertCommand = insertM;
sda.TableMappings.Add("Bs", "t_BjBills");


SqlParameterCollection sqlp = insertM.Parameters;

sqlp.Add("@BJID", SqlDbType.Int);
sqlp.Add("@inid", SqlDbType.Int, 4, "inid");
sqlp.Add("@InvID", SqlDbType.Int, 4, "InvID");
sqlp.Add("@Qty", SqlDbType.Money, 8, "Qty");
sqlp.Add("@Cost", SqlDbType.Money, 8, "Cost");
sqlp.Add("@ReBatch", SqlDbType.NVarChar, 30, "ReBatch");
sqlp.Add("@Quo", SqlDbType.Float, 8, "Quo");
sqlp.Add("@TaxP", SqlDbType.Money, 8, "TaxP");
sqlp.Add("@SumP", SqlDbType.Money, 8, "SumP");
sqlp.Add("@Term", SqlDbType.NVarChar, 4, "Term");
sqlp.Add("@RQty", SqlDbType.Money, 8, "RQty");
sqlp.Add("@RSumP", SqlDbType.Money, 8, "RSumP");
sqlp.Add("@RDate", SqlDbType.DateTime, 8, "RDate");
sqlp.Add("@CusID", SqlDbType.Int);
sqlp.Add("@Memo", SqlDbType.NVarChar, 40, "Memo");
sqlp["@CusID"].Value = bill.B[0].CusID;
sqlp["@BJID"].Value = bill.B[0].BJID;
weiweir 2008-07-08
  • 打赏
  • 举报
回复
报什么错误吗?还是直接没有插进数据库?先看一下的数据库那个字段的数据类型。
hanghaigood 2008-07-08
  • 打赏
  • 举报
回复
跟踪Rowstate属性的代码应该怎样写呀
ermachao 2008-07-08
  • 打赏
  • 举报
回复
你跟踪到要写数据库那datarow的rowstate是什么?
ermachao 2008-07-08
  • 打赏
  • 举报
回复
如果是added的话有datarow.setadd()方法
hanghaigood 2008-07-08
  • 打赏
  • 举报
回复
跟踪到Rowstate属性,那怎么样修改呀,它不是只读属性吗?应该不是这个地方出错吧..
ermachao 2008-07-08
  • 打赏
  • 举报
回复
可跟踪Rowstate属性
hanghaigood 2008-07-08
  • 打赏
  • 举报
回复
如何知道datarow的状态是"Added" or "modified"or "deleted"?且该怎样修改datarow的状态?
ermachao 2008-07-08
  • 打赏
  • 举报
回复
LZ先检查 datarow的状态是"Added" or "modified"or "deleted",因为dataadapter.update是根据这些状态调用 insert,update or delete sqlcommand德,如果状态没变,当然不会对数据库操作
hanghaigood 2008-07-08
  • 打赏
  • 举报
回复
没报错误,可是却没有插进数据库,数据库那个字段的数据类型是datatime

110,024

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧