- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我是 ASP.NET 的新手,作为一项自选任务,我要创建一个简单的博客。快完成了,但我遇到了一个问题。正如您从代码中看到的那样,我首先使用查询从我的 SQL 服务器数据库中返回博客条目的数量。然后,for 循环从所有行中读取标题、日期和文本内容,并创建一个将它们加载到的 html div。除一件事外效果很好:ExecuteScalar() 仅读取第一行,每次迭代都会返回相同的值,从而导致所有博客条目都相同。
我需要一种方法让读者在每次迭代时继续前进。我考虑过将 SQLbulkcopy 制作到另一个表中,然后我可以从 for 循环中删除第一行,但如果要在每个 Page_Load 上完成,这似乎会大大降低页面速度。
string SQLreadTitle = "Select BLOG.BlogTitle from BLOG order by BlogID DESC";
string SQLreadDate = "Select BLOG.BlogDate from BLOG order by BlogID DESC";
string SQLreadText = "Select BLOG.BlogText from BLOG order by BlogID DESC";
string SQLcountIDs = "Select count(BlogID) from BLOG";
protected void Page_Load(object sender, EventArgs e)
{
int i;
SqlConnection con = new SqlConnection(cnString);
con.Open();
SqlCommand countIDs = new SqlCommand(SQLcountIDs, con);
int count = Convert.ToInt32(countIDs.ExecuteScalar());
for (i = 0; i < count; i++)
{
SqlCommand readTitle = new SqlCommand(SQLreadTitle, con);
string titleString = readTitle.ExecuteScalar().ToString();
SqlCommand readDate = new SqlCommand(SQLreadDate, con);
string dateString = readDate.ExecuteScalar().ToString();
SqlCommand readText = new SqlCommand(SQLreadText, con);
string textString = readText.ExecuteScalar().ToString();
System.Web.UI.HtmlControls.HtmlGenericControl dynDiv =
new System.Web.UI.HtmlControls.HtmlGenericControl("DIV");
dynDiv.ID = "BlogPost";
dynDiv.InnerHtml = "<div id=\"BlogTitle\">" +
titleString + "</div><br /><div id=\"BlogDate\">"
+ dateString + "</div><br /><br /><div id=\"BlogText\">"
+ textString + "</div>";
Label1.Controls.Add(dynDiv);
}
con.Close();
}
提前致谢!
最佳答案
你让自己的生活变得太艰难了。您应该有一个 select 语句,然后读取返回的每一行。
string SQL = "Select BLOG.BlogTitle, BLOG.BlogDate, BLOG.BlogText from BLOG order by BlogID DESC";
// Positions of the columns you are reading
const int TITLE_ORDINAL = 0;
const int DATE_ORDINAL = 1;
const int TEXT_ORDINAL = 2;
protected void Page_Load(object sender, EventArgs e)
{
using (var con = new SqlConnection(cnString))
{
con.Open();
try
{
using (var oCommand = new SqlCommand(SQL, con))
{
using (var oReader = oCommand.ExecuteReader())
{
while (oReader.Read())
{
var dynDiv = new System.Web.UI.HtmlControls.HtmlGenericControl("DIV");
dynDiv.ID = "BlogPost";
dynDiv.InnerHtml = "<div id=\"BlogTitle\">" +
oReader.GetString(TITLE_ORDINAL) + "</div><br /><div id=\"BlogDate\">"
+ oReader.GetString(DATE_ORDINAL) + "</div><br /><br /><div id=\"BlogText\">"
+ oReader.GetString(TEXT_ORDINAL) + "</div>";
Label1.Controls.Add(dynDiv);
}
}
}
} finally {
con.Close();
}
}
}
关于c# - SqlCommand.ExecuteReader 并越过第一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9865004/
我的 C# 项目有问题。我使用 MySQL 数据库,并使用 MySQL 网站上的 MySQL 连接器驱动程序,但光标和连接有问题。事实上,Visual Studio 表示不可能从第二个过程读取数据,因
我在从 sqlServer 中的表填充 Windows 窗体上的列表框时遇到了一些麻烦。该表是一列字符串值,因为我很不喜欢在我的应用程序中多次调用这个值列表,所以我将它设置为一个类,并在默认构造函数中
我有一个名为“MatchType”的表,它包含: ID | MatchTypeName 1 | One Day 2 | Two Day 3 | T20 我有一种方法可以根据与 MatchType
当我运行 cmd.ExecuteScalar() 或 cmd.ExecuteNonQuery() 时,命令对象上的 Output 和 InputOutput 参数会根据存储过程中的更改进行更新。但是,
考虑以下代码: StringBuilder textResults = new StringBuilder(); using(SqlConnection connect
我正在尝试从 powershell 脚本中的 SQL 表中读取数据。我可以在 reader 对象中看到数据,但是在使用 While (readerobject.read()){} 读取它时,它不会进入
好的,我在本周早些时候询问了这个非常错误的问题,并得到了一些非常有用的答案,毫无疑问,自从我开始遵循这些建议以来,情况已经有了很大的改善。 但是,现在我正在使用“正确”的最佳实践方法来访问数据库,但在
我有一个名为 DbTest 的数据库和一个名为 user 的表。它在行中抛出异常 cmd.ExecuteReader(); 异常消息说: There is an error parsing the q
我正在尝试从我的数据库中读取值。但为什么我只得到没有列名的值?这是我的 Controller 。返回 JSON 中的值 SqlCommand cmd = con.CreateC
我们有一个应用程序,给人的印象是由于数据库响应不佳而成为瓶颈。数据库和应用程序服务器的负载都不重,但应用程序花费大量时间通过 ExecuteReader 进行查询。 我们正在测量两件事:SQL Ser
我需要检索存储在包含数千项的数据库中的信息。如果我通过这种方式逐一进行,则需要花费大量时间(tac 是一个 8 个字符的字符串): string connectionString = @"Provid
很明显,ExecuteReader 用于只读,ExecuteNonQuery 用于事务。但出于某种原因,即使我使用 ExecuteReader,我仍然能够运行写入(插入、更新、删除)命令(在 text
不确定这是 Npgsql 或 Dapper 中的错误还是我做错了。 我正在尝试插入一个记录数组并返回插入的行以获取插入的 ID。记录作为 Postgres 数组参数传递 C#类 public clas
我正在为名为 OTServer 的游戏服务器编写数据库管理器,但我第二次使用 executereader() 时遇到问题。这是代码: private void button1_Click(ob
我注意到我的网页上有一些奇怪的行为。我有一个 WCF 数据服务,它提供 JSON 来填充 jqGrid。使用 javascript/ajax 调用该服务。 然后我有一些服务器端代码也调用相同的 WCF
我是 ASP.NET 的新手,作为一项自选任务,我要创建一个简单的博客。快完成了,但我遇到了一个问题。正如您从代码中看到的那样,我首先使用查询从我的 SQL 服务器数据库中返回博客条目的数量。然后,f
我很困惑,我正在尝试从数据库中填充 5 个文本框,但并非所有 5 个文本框都会始终有数据。 例子: 编号 |元素编号 | QType 1 | 10 | 2盒 2 | 10 | 6盒 3 | 11 |
我有一个接受输入并返回多列的存储过程。当我从 SSMS 以及 VS 2013 内部执行存储过程时,该存储过程有效。但是,当我尝试使用 SqlCommand.ExecuteReader 执行它时,读取器
我必须用单个事务插入两个表,必须实现的查询如下。其次在 SqlDataReader read = comm.ExecuteReader(); 获取异常 public void SqlExecuteNo
在 SQL 2008 和 C# 4.0 上使用存储过程时,我无法检索输出信息并从 Select 语句返回信息。我不断收到“对象引用未设置到对象的实例”。当我执行 ExecuteScalar() 时,我
我是一名优秀的程序员,十分优秀!