如何填写数据表与SQL表
我目前建立在我的Page_Load阅读下面的代码的DataTable如何填写数据表与SQL表
protected void Page_Load(object sender, EventArgs e)
{
if (Session["AllFeatures1"] == null)
{
Session["AllFeatures1"] = GetData();
}
table = (DataTable)Session["AllFeatures1"];
DayPilotCalendar1.DataSource = Session["AllFeatures1"];
DayPilotNavigator1.DataSource = Session["AllFeatures1"];
if (!IsPostBack)
{
DataBind();
DayPilotCalendar1.UpdateWithMessage("Welcome!");
}
if (User.Identity.Name != "")
{
Panel1.Visible = true;
}
}
我想知道如何将这个代码,以便它从一个SQL查询读取转换?我正在试验下面的代码,但我不知道如何连接它们,以便我的页面加载中的数据表格填充下面的SQL命令。
SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["BarManConnectionString"].ConnectionString);
conn.Open();
string query = "SELECT * FROM [EventOne]";
SqlCommand cmd = new SqlCommand(query, conn);
DataTable t1 = new DataTable();
using (SqlDataAdapter a = new SqlDataAdapter(cmd))
{
a.Fill(t1);
}
您需要修改方法GetData()
,并添加你的 “实验性” 的代码有..并返回t1
..
完成。
是的......你是正确的我在Page_Load时刻被脑锁定你说你的工作代码在GetData()中弹出我的“将所有内容放在Page_Load中”冻结。谢谢你的推动。 – AhabLives 2012-08-16 18:48:08
SqlDataReader
是DataTable
的有效数据源。因此,所有你需要做的是:
public DataTable GetData()
{
SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["BarManConnectionString"].ConnectionString);
conn.Open();
string query = "SELECT * FROM [EventOne]";
SqlCommand cmd = new SqlCommand(query, conn);
DataTable dt = new DataTable();
dt.Load(cmd.ExecuteReader());
conn.Close();
return dt;
}
他已经用'SqlDataAdapter'填充表,所以他已经超过了这一点.. – banging 2012-08-16 18:34:30
这回答问题“_如何用SQL Table_填充DataTable”完美如果它不是专用于OP,那么OP没有足够好地标题他的问题 – xpt 2017-03-06 16:35:39
如果您不使用DataReader.Load()方法来读取所有类型的SQL选择Query,我用它读出一个带有一些LEFT JOIN的复杂SELECT,然后我得到“无法启用约束。一个或多个行包含违反非空,唯一或外键约束的值“异常。在我开始使用DataAdapter.Fill(DataTable)类型的Query之后,现在没有出现异常。 – Jettero 2017-05-06 22:13:08
可以使方法,它返回给定的SQL查询的数据表:
public DataTable GetDataTable()
{
SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["BarManConnectionString"].ConnectionString);
conn.Open();
string query = "SELECT * FROM [EventOne] ";
SqlCommand cmd = new SqlCommand(query, conn);
DataTable t1 = new DataTable();
using (SqlDataAdapter a = new SqlDataAdapter(cmd))
{
a.Fill(t1);
}
return t1;
}
,现在可以这样使用:
table = GetDataTable();
上面的答案是正确的,但我认为如果您需要将参数传递到查询中,则可以通过提供相同方法来扩展另一个答案。
SqlDataAdapter
快速简单,但只适用于用静态请求填充表格的情况,即:不带参数的简单SELECT
。
这是我的方式来做同样的事情,但使用一个参数来控制我需要在我的表中的数据。我用它来填充DropDownList
。
//populate the Programs dropdownlist according to the student's study year/preference
DropDownList ddlPrograms = (DropDownList)DetailsView1.FindControl("ddlPrograms");
if (ddlPrograms != null)
{
using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ATCNTV1ConnectionString"].ConnectionString))
{
try
{
con.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = "SELECT ProgramID, ProgramName FROM tblPrograms WHERE ProgramCatID > 0 AND ProgramStatusID = (CASE WHEN @StudyYearID = 'VPR' THEN 10 ELSE 7 END) AND ProgramID NOT IN (23,112,113) ORDER BY ProgramName";
cmd.Parameters.Add("@StudyYearID", SqlDbType.Char).Value = "11";
DataTable wsPrograms = new DataTable();
wsPrograms.Load(cmd.ExecuteReader());
//populate the Programs ddl list
ddlPrograms.DataSource = wsPrograms;
ddlPrograms.DataTextField = "ProgramName";
ddlPrograms.DataValueField = "ProgramID";
ddlPrograms.DataBind();
ddlPrograms.Items.Insert(0, new ListItem("<Select Program>", "0"));
}
catch (Exception ex)
{
// Handle the error
}
}
}
享受
你在哪里卡住了?哪条线? – 2012-08-16 18:27:28
this line table =(DataTable)Session [“AllFeatures1”]; 我希望它是t1 =(DataTable)Session [“AllFeatures1]; – AhabLives 2012-08-16 18:32:01
那么什么是阻止你的?你知道代码 – 2012-08-16 18:38:36