【发布时间】:2012-04-22 14:34:59
【问题描述】:
我想询问更多使用数据网格将数据从 SQL Server 显示到 WinForm。 我一直在创建一个数据网格,显示数据的存储过程是
ALTER PROC [dbo].[SP_GetData]
AS
SELECT nama , nim
FROM tabledata
我已经在 C# 中创建了访问数据库和存储过程的函数
string Sp_Name = "dbo.SP_GetData";
SqlConnection SqlCon = new SqlConnection("Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=DBMahasiswa;Data Source=.");
SqlCon.Open();
SqlCommand SqlCom = new SqlCommand(Sp_Name , SqlCon);
SqlCom.CommandType = CommandType.StoredProcedure;
List<mahasiswaData> listMahasiswa = new List<mahasiswaData>();
using (SqlDataReader sqlDataReader = SqlCom.ExecuteReader())
{
if (sqlDataReader.HasRows)
{
while (sqlDataReader.Read())
{
mahasiswaData DataMhs = new mahasiswaData();
DataMhs.Nama = sqlDataReader["Name"].ToString();
DataMhs.Umur = Convert.ToInt32(sqlDataReader["Age"]);
listMahasiswa.Add(DataMhs);
}
}
}
SqlCon.Close();
return listMahasiswa;
最后,在显示按钮中我添加了这段代码
dgvmahasiswa.DataSource = new MahasiswaDB().LoadMahasiswa();
有人能告诉我问题出在哪里或替代方案吗?
非常感谢! :D
【问题讨论】:
-
它到底有什么问题?除了建议进行一些重构,不在 catch 块中返回 null (你至少应该记录错误,这样你就知道事情是否出错了),以及更多地使用 using 关键字,这看起来很有效。另请注意,如果您的查询运行但未返回任何行,您将只返回一个空列表Mahasiswa
-
非常感谢您的评论 :) :) 我添加了 try-catch 以防出现一些错误。但是,我最后总是收到错误的返回。仅供参考,我已经添加了一些数据到数据库中的表..
标签: c# sql-server sql-server-2008 datagrid