自动生成语句
在使用来自表或视图的页的功能时,如果想使用其自带的增删改功能按钮并使用其自动生成语句功能可以点页面中的高级勾选insert,update,delete,想要使用其功能必须选定表中所有的主键,需要特别注意。
指定sql语句
在使用指定sql语句编写时可以使用自动生成语句先生部分成语句然后复制修改即可,页面会自动生成其参数化语句需要的参数化语句。下面给出示例代码。
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:LMSConnectionString %>
" SelectCommand="SELECT [FcrNum], [FcrSend], [FcrAccept], [FcrFillingtime], [FcrState], [Fcr_ID] FROM [Logistics_Fcr]"
DeleteCommand="DELETE FROM [Logistics_Fcr] WHERE [Fcr_ID] = @Fcr_ID"
InsertCommand="INSERT INTO [Logistics_Fcr] ([FcrNum], [FcrSend], [FcrAccept], [FcrFillingtime], [FcrState], [Fcr_ID]) VALUES (@FcrNum, @FcrSend, @FcrAccept, @FcrFillingtime, @FcrState, @Fcr_ID)"
UpdateCommand="UPDATE [Logistics_Fcr] SET [FcrNum] = @FcrNum, [FcrSend] = @FcrSend, [FcrAccept] = @FcrAccept, [FcrFillingtime] = @FcrFillingtime, [FcrState] = @FcrState WHERE [Fcr_ID] = @Fcr_ID"
>
<DeleteParameters>
<asp:Parameter Name="Fcr_ID" Type="Int32" />
</DeleteParameters>
<InsertParameters>
<asp:Parameter Name="FcrNum" Type="String" />
<asp:Parameter Name="FcrSend" Type="Int32" />
<asp:Parameter Name="FcrAccept" Type="Int32" />
<asp:Parameter Name="FcrFillingtime" Type="String" />
<asp:Parameter Name="FcrState" Type="String" />
<asp:Parameter Name="Fcr_ID" Type="Int32" />
</InsertParameters>
<UpdateParameters>
<asp:Parameter Name="FcrNum" Type="String" />
<asp:Parameter Name="FcrSend" Type="Int32" />
<asp:Parameter Name="FcrAccept" Type="Int32" />
<asp:Parameter Name="FcrFillingtime" Type="String" />
<asp:Parameter Name="FcrState" Type="String" />
<asp:Parameter Name="Fcr_ID" Type="Int32" />
</UpdateParameters>
</asp:SqlDataSource>
多表情况
可以通过调用数据源的增删改查命令实现多表情况增删改查
下面给出示例代码
string fcrid= GridView1.Rows[GridView1.SelectedRow.RowIndex].Cells[1].Text; //选择选定所在行所在列的文本数据
string roadid= GridView1.Rows[GridView1.SelectedRow.RowIndex].Cells[2].Text; //选择选定所在行所在列的文本数据
SqlDataSource1.DeleteCommand = "DELETE FROM [LMS].[dbo].[Logistics_Fcr] WHERE Fcr_ID =" + fcrid;
SqlDataSource1.Delete();
SqlDataSource1.DeleteCommand = "delete from Logistics_RoadInfo where RoadInfo_ID=" + roadid;
SqlDataSource1.Delete();
无论是否有级联主外键或者多少个表都可以方便的实现增删改查。
在查询数据多变时需要注意的事项
例以下代码
//实现模糊查询
string fcrnum = TextBox1.Text; //需要模糊查询的字段
string sel= "select * from [LMS].[dbo].[Logistics_Fcr] where Fcrnum like '%"+fcrnum+"%'";
string lm = @"Data Source =LAPTOP-9TE9OJAD\SQLEXPRESS; Initial Catalog = LMS; Integrated Security = True";
SqlConnection con = new SqlConnection(lm);
SqlCommand cm = new SqlCommand(sel, con);
SqlDataAdapter da = new SqlDataAdapter(); //数据源适配器
da.SelectCommand = cm;
DataSet ds = new DataSet(); //数据集
int i =da.Fill(ds,"s"); //执行查询并装入数据集中的s表,i为返回的受影响的行数
GridView1.DataSource = ds.Tables[0]; //指定数据源
GridView1.DataBind(); //绑定
以上代码将会实现对数据库的模糊查询并保存在数据集中并显示在Gridview上,但是前台的gridview有时并不会显示数据,此时需将 AutoGenerateColumns设置为true。
另外,以上的部分代码也可改为
da.Fill();
GridView1.DataSource = ds;
存储过程
后台代码
string sql = SqlDataSource1.ConnectionString;
string tsql = "delectdriver"; //指定存储过程名字
SqlConnection con = new SqlConnection(sql);
SqlCommand com = new SqlCommand(tsql,con);
com.CommandType = System.Data.CommandType.StoredProcedure; //指定为存储过程
//逐一添加存储过程参数
com.Parameters.Add("@driverid", System.Data.SqlDbType.Int).Value=int.Parse(GridView1.DataKeys[i].Value.ToString());
con.Open();
com.ExecuteNonQuery(); //执行
com.Parameters.Clear();
con.Close();