数据库问题!弄了一天了!不得不来这里请教!

gbl777 2003-02-13 03:03:11
请看以下两个事件得代码:
在运行时出现这样的异常:
未处理的“System.InvalidOperationException”类型的异常出现在 system.data.dll 中

其他信息:当传递具有新行的 DataRow 集合时,更新要求有效的 InsertCommand。

代码:

//添加新纪录事件
private void MIAddRecord_Click(object sender, System.EventArgs e)
{
DialogResult result;
result = MessageBox.Show (this,"确定要添加新纪录嘛?","提示",MessageBoxButtons.YesNo ,
MessageBoxIcon.Question,
MessageBoxDefaultButton.Button1 );
if(result ==DialogResult.Yes )
{

//所有控件设置为空
textBoxName.Text = "";
comboBoxSex.SelectedIndex =0;
textBoxYear.Text = "";
comboBoxMonth.SelectedIndex = 0;
comboBoxDay.SelectedIndex = 0;
textBoxBelong.Text = "";
textBoxStar.Text ="";
textBoxPhone.Text = "";
textBoxMobile.Text ="";
textBoxAddress.Text = "";
textBoxOicq.Text = "";
textBoxMail.Text = "";
pictureBox.Image = null;



buttonSaveNew.Enabled = true;
}



}



//保存新纪录事件
private void buttonSaveNew_Click(object sender, System.EventArgs e)
{
//在DataSet中新增一行
DataRow myRow = myDataSet.Tables ["Records"].NewRow ();

//为行中各字段赋值
myRow["用户名"] = currentUser;
myRow["姓名"]=textBoxName.Text .Trim ();
myRow["性别"]=comboBoxSex.Text .Trim ();

//新建一个日期格式
DateTime datetime ;
int Year = Convert.ToInt32 (textBoxYear.Text);
int Month = comboBoxMonth.SelectedIndex +1;
int Day =comboBoxDay.SelectedIndex +1;
datetime = new DateTime (Year,Month,Day);

myRow["出生日期"]=datetime;

myRow["生肖"] = textBoxBelong.Text .Trim ();
myRow["星座"] = textBoxStar.Text .Trim ();
myRow["电话"] = textBoxPhone.Text .Trim ();
myRow["手机"] = textBoxMobile.Text .Trim ();
myRow["Oicq"] = textBoxOicq.Text .Trim ();
myRow["Email"]= textBoxMail.Text .Trim ();

//图片字段的赋值
if(pictureBox.Image !=null)
{
//新建一个内存流
MemoryStream ms = new MemoryStream ();
//把图片内容存到内存流中去
pictureBox.Image .Save (ms,System.Drawing .Imaging.ImageFormat .Bmp );
//把内存流中的内容按字节读入数组
byte [] myData = new Byte [ms.Length ];
ms.Position = 0;
ms.Read (myData,0,Convert.ToInt32 (ms.Length ));
myRow["图片"] = myData;
ms.Close ();
}


//添加行
myDataSet.Tables ["Records"].Rows .Add (myRow);

//设置状态条
statusBarMain.Panels [0].Text = "当前用户:"+currentUser;
statusBarMain.Panels [1].Text = "共有记录:"+myDataSet.Tables ["Records"].Rows .Count .ToString ();


//更新数据库信息,保持DataSet与数据库一致
//注意此处出现异常!!!!!!!!!!!!!
myDataAdapter.Update (myDataSet,"Records");

buttonSaveNew.Enabled =false;
}


各位请帮忙看看!!!!谢了
...全文
166 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
gbl777 2003-02-14
  • 打赏
  • 举报
回复
ylm0101():我照着你的方法去做,结果还是出现同样的异常!

未处理的异常: System.Data.SqlTypes.SqlTypeException: SqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM 之间。
ylm0101 2003-02-13
  • 打赏
  • 举报
回复
就是时间,把myRow["出生日期"]=datetime.ToString("yyyy-MM-dd");
gbl777 2003-02-13
  • 打赏
  • 举报
回复
luoqing(明天将会...):我照着你的方法做了,那个问题解决了,但是新问题出现了。

还是myDataAdapter.Update (myDataSet,"Records");

出现以下异常:

未处理的异常: System.Data.SqlTypes.SqlTypeException: SqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM 之间。
at System.Data.Common.DbDataAdapter.Update(DataRow[] dataRows, DataTableMapping tableMapping)
at System.Data.Common.DbDataAdapter.Update(DataSet dataSet, String srcTable)
luoqing 2003-02-13
  • 打赏
  • 举报
回复
要使用这个类SqlCommandBuilder
如:
public DataSet SelectSqlSrvRows(DataSet myDataSet,string myConnection,string mySelectQuery,string myTableName) {
SqlConnection myConn = new SqlConnection(myConnection);
SqlDataAdapter myDataAdapter = new SqlDataAdapter();
myDataAdapter.SelectCommand = new SqlCommand(mySelectQuery, myConn);
SqlCommandBuilder custCB = new SqlCommandBuilder(myDataAdapter);

myConn.Open();

DataSet custDS = new DataSet();
myDataAdapter.Fill(custDS, "Customers");

//code to modify data in dataset here

//Without the SqlCommandBuilder this line would fail
myDataAdapter.Update(custDS, "Customers");

myConn.Close();

return custDS;
}
zjxyp 2003-02-13
  • 打赏
  • 举报
回复
我不知道你是怎么创建的
比如用vs.net自动创建一个如下(参考):
this.sqlInsertCommand1 = new System.Data.SqlClient.SqlCommand();


//
// sqlInsertCommand1
//
this.sqlInsertCommand1.CommandText = "INSERT INTO pic(id, pic) VALUES (@id, @pic); SELECT id, pic FROM pic WHERE (id = " +
"@id)";
this.sqlInsertCommand1.Connection = this.sqlConnection1;
this.sqlInsertCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@id", System.Data.SqlDbType.VarChar, 10, "id"));
this.sqlInsertCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@pic", System.Data.SqlDbType.VarBinary, 2147483647, "pic"));

myDataAdapter.InsertCommandt=his.sqlInsertCommand1;
gbl777 2003-02-13
  • 打赏
  • 举报
回复
zjxyp(阿平(杭州)) :能不能说清楚一点,怎么创建!谢谢

其实我也觉得与图片有关,可就是不知道怎么办!
glen 2003-02-13
  • 打赏
  • 举报
回复
我想应与图片相关!
zjxyp 2003-02-13
  • 打赏
  • 举报
回复
myDataAdapter.InsertCommand你没创建或者无效

110,534

社区成员

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

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

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