以下程序從SQL Server 2008表中提取數據,應用一個簡單的for循環並記錄總記錄數。程序編譯並運行成功,沒有任何錯誤,但不會將記錄總數記錄到屏幕上。它不打印任何東西。 的.cs(代碼隱藏)是:程序運行時沒有錯誤,但沒有給出所需的輸出
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.Sql;
using System.Data.SqlClient;
using System.Data;
namespace CountDocs
{
public partial class Home : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void btnCount_Click(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection("Data Source=MEHDI-PC\\SQLEXPRESS; Initial Catalog=PIMS; Integrated Security=true;");
{
using (SqlCommand cmd = new SqlCommand())
{
String sql = "select * from dbo.Company";
cmd.Connection = con;
cmd.CommandText = sql;
con1.Open();
Int32 Total = 0;
Total = (Int32)cmd1.ExecuteScalar();
Console.WriteLine(Total);
if (con.State == ConnectionState.Open)
{
con.Close();
}
for (int i = 0; i < dt.Rows.Count; ++i)
{
string companyname;
companyname = dt.Rows[i].ItemArray[0].ToString();
SqlConnection con1 = new SqlConnection("Data Source=MEHDI-PC\\SQLEXPRESS; Initial Catalog=PIMS; Integrated Security=true;");
{
using (SqlCommand cmd1 = new SqlCommand())
{
String sql1 = "select Count(*) from dbo.Documents where Src=" + "'" + companyname + "'";
cmd1.Connection = con1;
cmd1.CommandText = sql1;
con.Open();
DataTable dt1 = new DataTable();
Int32 Total = 0;
Total = (Int32)cmd1.ExecuteScalar();
Console.WriteLine(Total);
if (con.State == ConnectionState.Open)
{
con.Close();
}
}
}
}
}
}
}
}
}
由於程序不拋出任何語法錯誤,我想這可能是一個邏輯上的錯誤。有人能幫我注意嗎?提前致謝。
使用cmd1.ExecuteScalar。沒有使用SqlDataAdapter的要點。 ExecuteScalar - 執行查詢,並返回查詢返回的結果集中第一行的第一列。 – Seminda 2014-10-22 04:18:46
@Seminda你認爲SqlDataAdapter導致問題? – 2014-10-22 04:30:29
不,但如果你只需要一列,那麼ExecuteScalar就在你身邊。它會讓你的代碼更加簡單,並且你可以很容易地識別你的問題。 – Seminda 2014-10-22 22:01:06