ASP.Net C# 和 Microsoft SQL 连接
ASP.Net C# and Microsoft SQL Connection
我的项目在 asp.net 的 webform1 中,包括一个文本框和一个保存
按钮,当用户在文本框中输入某个国家/地区名称时,它应该
单击保存按钮,名称应保存在数据库 table named
国家。
然后在 webform2 中,保存的国家应该在页面加载时加载到下拉列表中,然后应该有一些文本框供用户使用
在下拉列表中输入 selected 国家的州,
最后,当用户 select 一个国家时,在 webform3 国家加载下拉列表中,它应该在另一个国家加载该国家的状态
下拉列表和当用户 select 来自第二个下拉列表的状态和
输入那个州的城市,它应该被保存在数据库中
点击保存按钮。
当我 运行 webform2 国家在下拉列表 1 中加载时我遇到了问题,但是当我 select 一个国家时它没有加载
下拉列表 2 中该国家/地区的州。
有帮助吗?
到目前为止,这是我的代码,
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;
namespace assign1 {
public partial class city: System.Web.UI.Page {
protected void Page_Load(object sender, EventArgs e) {
if (IsPostBack == false) {
SqlConnection conn = new SqlConnection("Data Source = HAFIZ_HARRON; Database = 7thSemester; Integrated Security = true");
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = new SqlCommand("SELECT CName,CID FROM country", conn);
DataTable dt = new DataTable();
da.Fill(dt);
ddlCountry.DataSource = dt;
ddlCountry.DataTextField = "CName";
ddlCountry.DataValueField = "CID";
ddlCountry.DataBind();
}
}
protected void btnSave_Click(object sender, EventArgs e) {
SqlConnection conn = new SqlConnection("Data Source = HAFIZ_HARRON; Database = 7thSemester; Integrated Security = true");
SqlCommand cmd = new SqlCommand("INSERT INTO city(CIName,SID,CID) Values('" + txtCity.Text + "','" + ddlState.SelectedIndex + "','" + ddlCountry.SelectedIndex + "')", conn);
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
protected void ddlState_SelectedIndexChanged(object sender, EventArgs e) {
/* SqlConnection conn = new SqlConnection("Data Source = HAFIZ_HARRON; Database = 7thSemester; Integrated Security = true");
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = new SqlCommand("SELECT SName,SID FROM state", conn);
DataTable dt = new DataTable();
da.Fill(dt);
ddlState.DataSource = dt;
ddlState.DataTextField = "SName";
ddlState.DataValueField = "SID";
ddlState.DataBind(); */
}
protected void ddlCountry_SelectedIndexChanged(object sender, EventArgs e) {
SqlConnection conn = new SqlConnection("Data Source = HAFIZ_HARRON; Database = 7thSemester; Integrated Security = true");
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = new SqlCommand("SELECT SName,SID FROM state", conn);
DataTable dt = new DataTable();
da.Fill(dt);
ddlState.DataSource = dt;
ddlState.DataTextField = "SName";
ddlState.DataValueField = "SID";
ddlState.DataBind();
}
}
}
----------
当您收到 ddlCountry_SelectedIndexChanged
时,您需要准备一个仅选择属于当前所选国家/地区的州的查询。
所以你的代码应该是
protected void ddlCountry_SelectedIndexChanged(object sender, EventArgs e)
{
using(SqlConnection conn = new SqlConnection(.....))
using(SqlDataAdapter da = new SqlDataAdapter())
{
string cmdText = @"SELECT SName,SID FROM state WHERE CID=@country";
da.SelectCommand = new SqlCommand(cmdText, conn);
da.SelectCommand.Parameters.Add("@country", SqlDbType.Int).Value = ddlCountry.SelectedValue;
DataTable dt = new DataTable();
da.Fill(dt);
ddlState.DataSource = dt;
ddlState.DataTextField = "SName";
ddlState.DataValueField = "SID";
ddlState.DataBind();
}
}
这里的查询文本不是通过连接字符串构建的,而是使用参数占位符 (WHERE CID=@country) 然后添加具有确切数据类型的所需参数(我想一个整数)到 SelectCommand 的参数集合。
关于 using 语句的几句话。这是使用一次性对象的首选方式,因为 using 块确保对象在退出块时被丢弃。
最后,您的连接字符串应该存储在 web.config 文件中,否则,如果您需要更改此字符串的任何细节,您将不得不搜索应用程序中您难以找到的每个地方编码那个字符串
您可以使用 ASP.NET 的 ajax 更新面板
它会彻底解决问题
在触发器中,您可以指定选定的索引更改事件
我的项目在 asp.net 的 webform1 中,包括一个文本框和一个保存 按钮,当用户在文本框中输入某个国家/地区名称时,它应该 单击保存按钮,名称应保存在数据库 table named 国家。 然后在 webform2 中,保存的国家应该在页面加载时加载到下拉列表中,然后应该有一些文本框供用户使用 在下拉列表中输入 selected 国家的州, 最后,当用户 select 一个国家时,在 webform3 国家加载下拉列表中,它应该在另一个国家加载该国家的状态 下拉列表和当用户 select 来自第二个下拉列表的状态和 输入那个州的城市,它应该被保存在数据库中 点击保存按钮。 当我 运行 webform2 国家在下拉列表 1 中加载时我遇到了问题,但是当我 select 一个国家时它没有加载 下拉列表 2 中该国家/地区的州。 有帮助吗? 到目前为止,这是我的代码,
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;
namespace assign1 {
public partial class city: System.Web.UI.Page {
protected void Page_Load(object sender, EventArgs e) {
if (IsPostBack == false) {
SqlConnection conn = new SqlConnection("Data Source = HAFIZ_HARRON; Database = 7thSemester; Integrated Security = true");
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = new SqlCommand("SELECT CName,CID FROM country", conn);
DataTable dt = new DataTable();
da.Fill(dt);
ddlCountry.DataSource = dt;
ddlCountry.DataTextField = "CName";
ddlCountry.DataValueField = "CID";
ddlCountry.DataBind();
}
}
protected void btnSave_Click(object sender, EventArgs e) {
SqlConnection conn = new SqlConnection("Data Source = HAFIZ_HARRON; Database = 7thSemester; Integrated Security = true");
SqlCommand cmd = new SqlCommand("INSERT INTO city(CIName,SID,CID) Values('" + txtCity.Text + "','" + ddlState.SelectedIndex + "','" + ddlCountry.SelectedIndex + "')", conn);
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
protected void ddlState_SelectedIndexChanged(object sender, EventArgs e) {
/* SqlConnection conn = new SqlConnection("Data Source = HAFIZ_HARRON; Database = 7thSemester; Integrated Security = true");
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = new SqlCommand("SELECT SName,SID FROM state", conn);
DataTable dt = new DataTable();
da.Fill(dt);
ddlState.DataSource = dt;
ddlState.DataTextField = "SName";
ddlState.DataValueField = "SID";
ddlState.DataBind(); */
}
protected void ddlCountry_SelectedIndexChanged(object sender, EventArgs e) {
SqlConnection conn = new SqlConnection("Data Source = HAFIZ_HARRON; Database = 7thSemester; Integrated Security = true");
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = new SqlCommand("SELECT SName,SID FROM state", conn);
DataTable dt = new DataTable();
da.Fill(dt);
ddlState.DataSource = dt;
ddlState.DataTextField = "SName";
ddlState.DataValueField = "SID";
ddlState.DataBind();
}
}
}
----------
当您收到 ddlCountry_SelectedIndexChanged
时,您需要准备一个仅选择属于当前所选国家/地区的州的查询。
所以你的代码应该是
protected void ddlCountry_SelectedIndexChanged(object sender, EventArgs e)
{
using(SqlConnection conn = new SqlConnection(.....))
using(SqlDataAdapter da = new SqlDataAdapter())
{
string cmdText = @"SELECT SName,SID FROM state WHERE CID=@country";
da.SelectCommand = new SqlCommand(cmdText, conn);
da.SelectCommand.Parameters.Add("@country", SqlDbType.Int).Value = ddlCountry.SelectedValue;
DataTable dt = new DataTable();
da.Fill(dt);
ddlState.DataSource = dt;
ddlState.DataTextField = "SName";
ddlState.DataValueField = "SID";
ddlState.DataBind();
}
}
这里的查询文本不是通过连接字符串构建的,而是使用参数占位符 (WHERE CID=@country) 然后添加具有确切数据类型的所需参数(我想一个整数)到 SelectCommand 的参数集合。
关于 using 语句的几句话。这是使用一次性对象的首选方式,因为 using 块确保对象在退出块时被丢弃。
最后,您的连接字符串应该存储在 web.config 文件中,否则,如果您需要更改此字符串的任何细节,您将不得不搜索应用程序中您难以找到的每个地方编码那个字符串
您可以使用 ASP.NET 的 ajax 更新面板 它会彻底解决问题 在触发器中,您可以指定选定的索引更改事件