using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Data;
public partial class Default34 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindData();
}
}
public void BindData()
{
SqlConnection con = new SqlConnection("Server=.;User ID=sx782369;Pwd=123456;DataBase=sx782369");
SqlDataAdapter scd = new SqlDataAdapter("select * from course2", con);
DataSet ds = new DataSet();
scd.Fill(ds);
GridView1.DataSource = ds;
GridView1.DataBind();
GridView1.DataKeyNames = new string[]{ "id" };
}
protected void GridView1_roweditinf(object sender, GridViewEditEventArgs e)
{
GridView1.EditIndex = e.NewEditIndex;
DataBind();
}
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
string bccdID = GridView1.DataKeys[e.RowIndex].Value.ToString();
string bccdName = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[1].Controls[0])).Text.ToString();
string bccdPrice = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[2].Controls[0])).Text.ToString();
string upsql = "update course2 set brccdName='"+bccdName+"',brccdPrice='"+bccdPrice+"' where id='"+bccdID+"'";
bool update = excesql(upsql);
if (update)
{
Response.Write("<script>alert(‘修改成功~’)</script>");
GridView1.EditIndex = -1;
BindData();
}
}
public bool excesql(string strsql)
{
string strcon = @"Server=.;User ID=sx782369;Pwd=123456;DataBase=sx782369";
SqlConnection conn = new SqlConnection(strcon);
SqlDataAdapter scd = new SqlDataAdapter(strsql, conn);
try
{
if (conn.State == System.Data.ConnectionState.Closed)
{
conn.Open();
}
scd.ExecuteNonQuery();
return true;
}
catch
{
return false;
}
finally
{
conn.Close();
}
}
}
scd.ExecuteNonQuery();這句老是報錯誤。
CS1061: “System.Data.SqlClient.SqlDataAdapter”不包含“ExecuteNonQuery”的定義,并且找不到可接受型別為“System.Data.SqlClient.SqlDataAdapter”的第一個引數的擴展方法“ExecuteNonQuery”(是否缺少 using 指令或程式集參考?)
uj5u.com熱心網友回復:
scd.ExecuteNonQuery();改成
DataTable tab=new DataTable ();
scd.fill(tab);
uj5u.com熱心網友回復:
這個類沒有提供這個方法,你何苦執著呢。我想編譯都不會通過吧uj5u.com熱心網友回復:
C#有2套操作資料庫的組件1.SqlDataAdapter 配合dataset
2.SqlCommand 直接用sql陳述句增刪改查。
ExecuteNonQuery是屬于SqlCommand 的
這個大概試試就可以跳過去,網上有很多封裝好的sqlhelper,直接拿來用。
uj5u.com熱心網友回復:
是SqlCommand命令里面的方法
uj5u.com熱心網友回復:
SqlDataAdapter是配接器啊
uj5u.com熱心網友回復:
SqlDataAdapter scd = new SqlDataAdapter(strsql, conn);
==>
SqlCommand scd = new SqlCommand(strsql, conn);
uj5u.com熱心網友回復:
謝謝各位,那天頭太暈沒看見代碼打錯了,第二天找的時候就找到了,麻煩了uj5u.com熱心網友回復:
剛學的時候覺得 DataAdataper 方便,必經它對應的是 DataTable 適配關系資料庫。我們現在從來不用 DataAdapter,我們也幾乎不用 DataTable。而且類似 ExecuteNonQuery 這類需求其實更是應該開發有一套好用的 SqlHelper 簡單框架。
uj5u.com熱心網友回復:
隨便貼一段我們的代碼db.CreateCommand($"update [代理人] set 機構編碼=@j,[團隊名稱]=@t,[團隊狀態]=@z,[團隊長費率]=@f where Id=@id")
.SetParam("j", this.Command.GetValue<string>("機構編碼"))
.SetParam("t", this.Command.GetValue<string>("團隊名稱"))
.SetParam("z", this.Command.GetValue<string>("團隊狀態"))
.SetParam("f", this.Command.GetValue<double>("團隊長費率"))
.SetParam("id", this.Command.GetValue<string>("Id"))
.ExecuteNonQuery();
自己把 ADO.NET 封裝一下擴展函式,成為一套 SQLHelper,可以使得它更好用,更清晰。
例如(簡化版。實際上我們的 SQLHelper 要處理 Oracle 等不同資料庫的問題)
public static DbCommand SetParam(this DbCommand cmd, string paramName, object paramValue)通過類似的定義,你可以讓 c# 語言更加適合自己書寫習慣。
{
switch (paramValue)
{
case DateTime dt:
if (dt.Year < 1753)
paramValue = new DateTime(1753, 1, 1);
break;
case null:
paramValue = DBNull.Value;
break;
}
var p = cmd.CreateParameter();
p.ParameterName = paramName;
p.Value = paramValue;
cmd.Parameters.Add(p);
return cmd;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/22866.html
標籤:ASP.NET
