为什么这样不能将DataSet中的内容提交到数据库中 急

cehcueu 2008-12-16 02:44:01

  很感谢各位提供的代码,现在虽然不报Update 无法找到 TableMapping['table'] 或 DataTable“table”。
这个错误了,但是依然不能将DataSet中的保存到数据库
http://topic.csdn.net/u/20081216/10/6b1e01d6-e8ff-4696-9bfc-ac776b31641e.html?seed=1494657499
以下是我的代码

protected void Button2_Click(object sender, EventArgs e)
{
WebSerict.Service_order order = new WebSerict.Service_order();//这是一个webservice的调用
DataSet ds = new DataSet();
ds = order.getdata("zhanghao", "p1", "p2");//返回一个dataset

SqlConnection conn = new SqlConnection(ConfigurationManager.
ConnectionStrings["WebConnectionString935"].ConnectionString);
SqlDataAdapter myAdapter = new SqlDataAdapter();
string s = "INSERT INTO [Web].[dbo].[getdata]([bl_no],[bl_create_date],[bl_create_time]"
+ ",[ship_cor_code],[agent],[vessel],[voyage],[dis_port],[mid_port])VALUES"
+ "(<bl_no, varchar(30),>,<bl_create_date, varchar(8),>,<bl_create_time, varchar(8),>"
+ ",<ship_cor_code, varchar(10),> ,<agent, varchar(15),>,<vessel, varchar(15),>"
+ ",<voyage, varchar(10),> ,<dis_port, varchar(30),>,<mid_port, varchar(30),>)";
SqlCommand myCommand = new SqlCommand(s, conn);
s = "select * from dbo.getdata";
SqlCommand myCommand2 = new SqlCommand(s, conn);

myAdapter.SelectCommand = myCommand2;
myAdapter.InsertCommand = myCommand;

SqlCommandBuilder bu = new SqlCommandBuilder(myAdapter);
DataRow row = ds.Tables[0].Rows[0];


TextBox1.Text = bu.GetInsertCommand().CommandText.ToString();
TextBox2.Text = bu.GetUpdateCommand().CommandText.ToString();

DataTableMapping tableMapping = myAdapter.TableMappings.Add("getdata",ds.Tables[0].TableName.ToString());
//DataTable dt = ds.Tables[0];
myAdapter.Update(ds, "getdata");
}


我本地表的表结构
CREATE TABLE [dbo].[getdata](
[bl_no] [varchar](30) COLLATE Chinese_PRC_CI_AS NOT NULL,
[bl_create_date] [varchar](8) COLLATE Chinese_PRC_CI_AS NULL,
[bl_create_time] [varchar](8) COLLATE Chinese_PRC_CI_AS NULL,
[ship_cor_code] [varchar](10) COLLATE Chinese_PRC_CI_AS NULL,
[agent] [varchar](15) COLLATE Chinese_PRC_CI_AS NULL,
[vessel] [varchar](15) COLLATE Chinese_PRC_CI_AS NULL,
[voyage] [varchar](10) COLLATE Chinese_PRC_CI_AS NULL,
[dis_port] [varchar](30) COLLATE Chinese_PRC_CI_AS NULL,
[mid_port] [varchar](30) COLLATE Chinese_PRC_CI_AS NULL,

)


...全文
217 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
manna0917 2008-12-18
  • 打赏
  • 举报
回复
sql语句不对吧
tianhuo_soft 2008-12-18
  • 打赏
  • 举报
回复
其实就是多加一个DataSet
localhost.WebService webs = new localhost.WebService();
DataSet ds = new DataSet();
ds = webs.HelloWorld1();

SqlConnection conn = new SqlConnection(ConfigurationManager.
ConnectionStrings["zh1_databaseConnectionString935"].ConnectionString);
conn.Open();
string s = "select * from getdata_new";

SqlDataAdapter myAdapter = new SqlDataAdapter(s,conn);
SqlCommandBuilder objCommandBuilder = new SqlCommandBuilder(myAdapter);
DataSet dsSoure = new DataSet();
myAdapter.Fill(dsSoure);

DataRow row = null;
foreach (DataRow row1 in ds.Tables[0].Rows)
{
row = dsSoure.Tables[0].NewRow();
row[0] = row1[0];
dsSoure.Tables[0].Rows.Add(row);

}

myAdapter.Update(dsSoure);
dsSoure.AcceptChanges();
cehcueu 2008-12-17
  • 打赏
  • 举报
回复
............
cehcueu 2008-12-17
  • 打赏
  • 举报
回复
..................
zhnzzy 2008-12-16
  • 打赏
  • 举报
回复
ds.AcceptChanges()呢
cehcueu 2008-12-16
  • 打赏
  • 举报
回复
没人知道嘛
没人知道嘛
没人知道嘛
tianhuo_soft 2008-12-16
  • 打赏
  • 举报
回复
UP
cehcueu 2008-12-16
  • 打赏
  • 举报
回复
UP
cehcueu 2008-12-16
  • 打赏
  • 举报
回复
。。。。。。。。。。。。。。。。
wuyq11 2008-12-16
  • 打赏
  • 举报
回复
通过Update更新数据库
参考
http://www.cnblogs.com/chris1943/archive/2008/01/18/1044367.html
http://www.cnblogs.com/S-TGM/archive/2008/06/28/1231618.html
cehcueu 2008-12-16
  • 打赏
  • 举报
回复
DataTable dt = ds.Tables[0];
TextBox3.Text = dt.Rows[0].RowState.ToString();

的确是Unchanged

我需要改什么?? 才能灯芯
hnjhjzyyxgs 2008-12-16
  • 打赏
  • 举报
回复
myAdapter.MissingSchemaAction = MissingSchemaAction.AddWithKey;//把表的主键天加到 dataset当中去
justindreams 2008-12-16
  • 打赏
  • 举报
回复
你看看你的DataTable里面的每行的状态,如果都是Unchange,当然不能更新了。
cehcueu 2008-12-16
  • 打赏
  • 举报
回复
可以我把写的那行删除
没有用
cpio 2008-12-16
  • 打赏
  • 举报
回复
我就感觉奇怪,怎么有这样的SQL语句啊

如果有SQL语句了,直接用Command的Execute方法说可以了。

如果要用Adapter,它更新时会判断DataSet中各行是的状态,被修改了的才会更新到数据库。
CloneCenter 2008-12-16
  • 打赏
  • 举报
回复
Update 方法需要 DataAdapter 提供 InsertCommand、UpdateCommand 和 DeleteCommand 的实现,以便保证数据库中的所有操作都可以完成。

看看 MSDN 上 SqlDataAdapter.Update 方法的示例吧!
http://msdn.microsoft.com/zh-cn/library/z1z2bkx2.aspx
cehcueu 2008-12-16
  • 打赏
  • 举报
回复
这个不写也没事
只要 s = "select * from dbo.getdata";
SqlCommand myCommand2 = new SqlCommand(s, conn);

myAdapter.SelectCommand = myCommand2;
有这个就行了
那个inserte没有用
cpio 2008-12-16
  • 打赏
  • 举报
回复

我怎么觉得这代码这么复杂呢

string s = "INSERT INTO [Web].[dbo].[getdata]([bl_no],[bl_create_date],[bl_create_time]"
+ ",[ship_cor_code],[agent],[vessel],[voyage],[dis_port],[mid_port])VALUES"
+ "(<bl_no, varchar(30),>,<bl_create_date, varchar(8),>,<bl_create_time, varchar(8),>"
+ ",<ship_cor_code, varchar(10),> ,<agent, varchar(15),>,<vessel, varchar(15),>"
+ ",<voyage, varchar(10),> ,<dis_port, varchar(30),>,<mid_port, varchar(30),>)";

这是什么意思啊?

111,131

社区成员

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

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

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