다음 프로그램은 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
@Seminda SqlDataAdapter가 문제의 원인이라고 생각하십니까? –
아니요. 단 하나의 열만 있으면 ExecuteScalar가 나타납니다. 그것은 당신의 코드를 더 간단하게 만들 것이고 당신은 당신의 문제를 매우 쉽게 식별 할 수 있습니다. – Seminda