添加数据库,更新数据的时候提示更新要求有效的InsertCommand错误,急死了。

zdrone 2006-03-28 04:51:06
代码如下:
想把界面上的textbox中的数据添加到mssql数据库的表中。

SqlConnection thisConnection=new SqlConnection();
thisConnection.ConnectionString="Data Source=zd;Initial Catalog=CSTest;User Id=sa;Password=;";
thisConnection.Open();
SqlDataAdapter thisAdapter=new SqlDataAdapter("select * from Info",thisConnection);
DataSet thisDataSet=new DataSet();
thisAdapter.Fill(thisDataSet,"Info");
DataTable myDataTable=thisDataSet.Tables["Info"];
DataRow myDataRow=myDataTable.NewRow();
myDataRow["姓名"]=textBox1.Text.Trim();
myDataRow["手机"]=textBox2.Text.Trim();
myDataRow["电话"]=textBox3.Text.Trim();
myDataRow["公司"]=textBox4.Text.Trim();
myDataRow["职务"]=CbPosition.Text.Trim();
myDataTable.Rows.Add(myDataRow);
thisAdapter.Update(thisDataSet.Tables["Info"]);
thisConnection.Close();
MessageBox.Show("Store succed");




到执行到 thisAdapter.Update(thisDataSet.Tables["Info"]);时出现

未处理的“System.InvalidOperationException”类型的异常出现在 system.data.dll 中。

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

我刚上手C# 公司要求我我转用C#写程序,以前时用VB的用ADO的时候没有这么多繁琐的操作。

另外各位能不能提供一点关于数据库添加、更新、删除的源代码啊?万分感谢啊。

现在我真是像蚂蚁一样,都快急疯了。
...全文
239 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
BQY 2006-03-28
  • 打赏
  • 举报
回复
利用thisAdapter.Update(thisDataSet.Tables["Info"]);进行更新维护要求数据库中表的设计比较合理.插入数据不能重复,否则就会出错.

如果希望自己执行sql语句,你可以到帮助中查看一下SqlCommand类.它可以执行任意操作.

例如:
SqlCommand cmd=myConn.CreateCommand();//自己书写,可能拼写有误

cmd.CommandText="Insert Into....";//插入sql脚本命令

myConn.Open();//打开链接

cmd.ExecuteNonQuery();//执行sql命令

myConn.Close();//关闭
sacrefies 2006-03-28
  • 打赏
  • 举报
回复
/// <summary>
/// 使用提供的数据表中的指定列向目标表中增加新的记录。
/// </summary>
/// <param name="source">源数据表。该表中的行的 RowState 必须是 Added 状态</param>
/// <param name="columns">新增数据中的列,逗号分隔。</param>
/// <param name="targetTable">数据库中目标表的名称</param>
public void InsertData(DataTable source, string columns, string targetTable)
{
DataTable dt = source.Clone();
string[] para = columns.Split(',');
dt.Dispose();
dt = null;

// 生成插入命令对象
SqlCommand cm = new SqlCommand();
for (int i = 0; i < para.Length; i ++)
{
SqlParameter sp = new SqlParameter();
sp.ParameterName = "@" + para[i];
sp.SourceColumn = para[i];
sp.SourceVersion = DataRowVersion.Current;
cm.Parameters.Add(sp);
para[i] = "@" + para[i];
}
cm.CommandType = CommandType.Text;
cm.CommandTimeout = 600;
cm.CommandText = "INSERT INTO " + targetTable + " (" + columns + ") VALUES (" + string.Join(",", para) + ")";
cm.Connection = this.oConn;

this.oAd = new SqlDataAdapter();
this.oAd.InsertCommand = cm;

try
{
this.openConn();
this.oAd.Update(source);
}
catch (Exception e)
{
throw(e);
}
finally
{
this.closeConn();
cm.Dispose();
this.oAd.Dispose();
cm = null;
this.oAd = null;
}
}
下载了一大堆的免费文档 我也贡献一个我自己写的PowerDesigner16 5的使用文档 这个是公司领导让我自己写来做使用指导用的 写的仓促 多有不恰当的地方 望大家见谅 1 这个是16 5的版本 2 这个是以oralce11g为模板 3 文档目录如下: PowerDesigner 16 5 指导 1 一 安装 3 二 新建模板步骤 这里以Oracle11g数据为例 3 1 新建Model 3 2 Modle设置 3 3 模板设置 4 4 右侧工具条 5 5 新建测试包 6 6 表配置 6 6 1进入模板 6 6 2新建表 6 6 3修改表 7 6 4添加注释 7 6 5属性设置 8 6 5 1 8 6 5 2 9 6 5 3 9 6 5 4 9 6 6添加表关系 10 6 7表关系设置 10 6 8模板保存 12 6 9查看模板 12 三 模板导入脚本 12 1 打开Change Current DRMS 12 2 删除多余双引号 13 3 生成脚本 13 四 配置数据 15 1 点击Database >Configure Connections 15 2 选择第三个系统数据根源 17 3 选择Oracle in OraDb11g hom1 选择下一步 然后点击完成 17 4 数据源配置 18 5 配置成功 19 五 反向工程生成模板 20 1 按照二 1和二 2生成一个空模板 20 2 选择Database >Update Model from Database 20 3 选择数据源 20 4 数据源配置 21 5 选择反向工程导出对象 22 6 可以看到反向工程自动生成的模板 即代表操作工程 23 六 生成HTML文档 24 1 点击Report >Generate Report 24 2 配置完成 点击确认即可 24 3 打开html文档 应该是下图格式 25">下载了一大堆的免费文档 我也贡献一个我自己写的PowerDesigner16 5的使用文档 这个是公司领导让我自己写来做使用指导用的 写的仓促 多有不恰当的地方 望大家见谅 1 这个是16 5的版本 2 这个是以oralce11g为模板 3 文档 [更多]

111,125

社区成员

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

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

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