SqlDataAdapter修改数据库

橙宝宝 2010-07-02 01:42:57
        SqlConnection conn = new SqlConnection(sqlbusiness);
string i = ddl.SelectedValue;
string display = "select content from business where category=" + "'" + i + "'";
SqlDataAdapter sda= new SqlDataAdapter(display, conn);
DataSet ds = new DataSet();
sda.Fill(ds);
sda.UpdateCommand = new SqlCommand("update business set content=" + "'" + Editor1.Text + "'" + "where category=" + "'" + i + "'",conn);
ds.Tables[0].Rows[0][0] = Editor1.Text;

以上代码是修改数据库里的一条记录内容,点修改后数据库并没有被更改,请问我哪写错了?
...全文
320 38 打赏 收藏 转发到动态 举报
写回复
用AI写文章
38 条回复
切换为时间正序
请发表友善的回复…
发表回复
橙宝宝 2010-07-02
  • 打赏
  • 举报
回复
哦,我试一试写写看。
阿非 2010-07-02
  • 打赏
  • 举报
回复
[Quote=引用 35 楼 ca3355 的回复:]
恩,但是加了他DropDownList就不太好用了,选择其他项后Editor1就不跟着刷新了
[/Quote]

那你应该在 DropDownList 的相关事件中写 更新Editor1的代码
web share 2010-07-02
  • 打赏
  • 举报
回复
你可以用 SqlCommendBuilder 这个组件
橙宝宝 2010-07-02
  • 打赏
  • 举报
回复
恩,但是加了他DropDownList就不太好用了,选择其他项后Editor1就不跟着刷新了
橙宝宝 2010-07-02
  • 打赏
  • 举报
回复
[Quote=引用 32 楼 sandy945 的回复:]
要写在 !IsPostBack 里面
[/Quote]
哦,忘加条件了……
橙宝宝 2010-07-02
  • 打赏
  • 举报
回复
写在里面就都解决了,多加班了15分钟呵呵,谢谢你
阿非 2010-07-02
  • 打赏
  • 举报
回复
要写在 !IsPostBack 里面
橙宝宝 2010-07-02
  • 打赏
  • 举报
回复
我好像应该把他写在
    protected void ddl_SelectedIndexChanged(object sender, EventArgs e)
{

}

里面
橙宝宝 2010-07-02
  • 打赏
  • 举报
回复
我知道是怎么回事了,是因为
   protected void Page_Load(object sender, EventArgs e)
{
SqlConnection conn = new SqlConnection(sqlbusiness);
string i = ddl.SelectedValue;
string display = "select content from business where category=" + "'" + i + "'";
SqlDataAdapter sda = new SqlDataAdapter(display, conn);
DataSet ds = new DataSet();
sda.Fill(ds);
DataTable tableSource = ds.Tables[0];
Editor1.Text = ds.Tables[0].Rows[0][0].ToString();
}

就是他搞的鬼,注销后就写入了,谢谢帮忙,今天学了不少东西。
阿非 2010-07-02
  • 打赏
  • 举报
回复
sda.Update(dataset, "business");

这句也会返回影响的行数
阿非 2010-07-02
  • 打赏
  • 举报
回复
row["content"] = Editor1.Text;

你看下这句的值,确认一下 是操作失败 还是一直用原来的值更新
橙宝宝 2010-07-02
  • 打赏
  • 举报
回复
这回通过了,不过又出现以前的老毛病了,不往数据库里写……
阿非 2010-07-02
  • 打赏
  • 举报
回复

sda.UpdateCommand = new SqlCommand("update business set content=" + "'" + Editor1.Text + "'" + " where category=" + "'" + ddl.SelectedValue + "'", conn);
sda.UpdateCommand.Parameters.Add(Editor1.Text, SqlDbType.NText, 15, "content");
SqlParameter parameter = sda.UpdateCommand.Parameters.Add(i, SqlDbType.NVarChar,15,"category");
parameter.SourceColumn = i;
parameter.SourceVersion = DataRowVersion.Original;
DataSet dataset = new DataSet();
sda.Fill(dataset, "business");
DataRow row = dataset.Tables["business"].Rows[0];
row["content"] = Editor1.Text;
sda.Update(dataset, "business");
conn.Close();


=>


sda.UpdateCommand = new SqlCommand("update business set content=@content where category=@category ", conn);
sda.UpdateCommand.Parameters.Add("@content", SqlDbType.NText, 15, "content");
SqlParameter parameter = sda.UpdateCommand.Parameters.Add("@category", SqlDbType.NVarChar,15,"category");
parameter.SourceColumn = "category";
parameter.SourceVersion = DataRowVersion.Original;
DataSet dataset = new DataSet();
sda.Fill(dataset, "business");
DataRow row = dataset.Tables["business"].Rows[0];
row["content"] = Editor1.Text;
sda.Update(dataset, "business");
conn.Close();
橙宝宝 2010-07-02
  • 打赏
  • 举报
回复
他提示我为提供参数是怎么回事呢?

参数化查询 '(@内容1 ntext,@约束条件1 nvarchar(15))update business set conte' 需要参数 @约束条件1,但未提供该参数。

        SqlConnection conn = new SqlConnection(sqlbusiness);
conn.Open();
string i = ddl.SelectedValue;

string display = "select * from business where category=" + "'" + i + "'";

SqlDataAdapter sda= new SqlDataAdapter(display, conn);

sda.UpdateCommand = new SqlCommand("update business set content=" + "'" + Editor1.Text + "'" + " where category=" + "'" + ddl.SelectedValue + "'", conn);
sda.UpdateCommand.Parameters.Add(Editor1.Text, SqlDbType.NText, 15, "content");
SqlParameter parameter = sda.UpdateCommand.Parameters.Add(i, SqlDbType.NVarChar,15,"category");
parameter.SourceColumn = i;
parameter.SourceVersion = DataRowVersion.Original;
DataSet dataset = new DataSet();
sda.Fill(dataset, "business");
DataRow row = dataset.Tables["business"].Rows[0];
row["content"] = Editor1.Text;
sda.Update(dataset, "business");
conn.Close();

请问我哪里写错了呢?
阿非 2010-07-02
  • 打赏
  • 举报
回复
dataAdpater.UpdateCommand = new SqlCommand(
"UPDATE Categories SET CategoryName = @CategoryName " +
"WHERE CategoryID = @CategoryID", connection);

dataAdpater.UpdateCommand.Parameters.Add(
"@CategoryName", SqlDbType.NVarChar, 15, "CategoryName");


这两句要连着看

@CategoryName 是参数名 , SqlDbType.NVarChar 是参数类型 , 15 是长度

CategoryName 是在表中的列名
橙宝宝 2010-07-02
  • 打赏
  • 举报
回复
dataAdpater.UpdateCommand.Parameters.Add(
"@CategoryName", SqlDbType.NVarChar, 15, "CategoryName");

请问这一句起的是什么作用?
橙宝宝 2010-07-02
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 sandy945 的回复:]
引用 19 楼 ca3355 的回复:
难道不是这个环节出的问题吗?

问题是在


SqlParameter parameter = dataAdpater.UpdateCommand.Parameters.Add(
"@CategoryID", SqlDbType.Int);
parameter.SourceColumn = "CategoryID";
parameter.SourceVersion = DataRowVersion.Original;


dataAdpater.Update(dataSet, "Categories");



另外一个是 使用 dataAdpater.Update

ps: 我只是使用参数的方式执行 ,没涉及三层。 你现在的容易被sql 注入
[/Quote]

这个没弄明白,他说我参数化查询未提供参数,请问别的地方还需要参数化吗?参数化我不会……,以后还需要多跟你学习一下呵呵
阿非 2010-07-02
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 ca3355 的回复:]
难道不是这个环节出的问题吗?
[/Quote]
问题是在


SqlParameter parameter = dataAdpater.UpdateCommand.Parameters.Add(
"@CategoryID", SqlDbType.Int);
parameter.SourceColumn = "CategoryID";
parameter.SourceVersion = DataRowVersion.Original;


dataAdpater.Update(dataSet, "Categories");



这两段上,一个是指定根据那个字段进行修改,该字段要注明 parameter.SourceVersion = DataRowVersion.Original;


另外一个是 使用 dataAdpater.Update

ps: 我只是使用参数的方式执行 ,没涉及三层。 你现在的容易被sql 注入
wuyq11 2010-07-02
  • 打赏
  • 举报
回复
SqlConnection cn = new SqlConnection("");
SqlDataAdapter da = new SqlDataAdapter("Select * FROM Tb", cn);
DataSet ds = new DataSet();
cn.Open();
da.Fill(ds);
cn.Close();

ds.Tables[0].Rows[1]["name"] = "";

SqlCommandBuilder cmd = new SqlCommandBuilder(da);
Console.WriteLine(cmd.GetUpdateCommand().CommandText);
cn.Open();
da.Update(ds.Tables[0]);
cn.Close();
橙宝宝 2010-07-02
  • 打赏
  • 举报
回复
难道不是这个环节出的问题吗?
加载更多回复(18)

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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