SQL Server Express和C#:数据库图表
我正在尝试将我的SQL Server Express数据库链接到ac#应用程序中的图表。 我试图提取一些员工的年龄,以显示他们在栏中的字符。 这是我的代码
string constring = "Data Source=.SQLEXPRESS;AttachDbFilename=C:UsersMichaelDownloadsEmployeeEmployeeEmployeeEmployeeDetails.mdf;Integrated Security=True;User Instance=True;Initial Catalog=Employee";
SqlConnection conDatabase = new SqlConnection(constring);
SqlCommand cmdDatabase = new SqlCommand("Select * from Employee;", conDatabase);
SqlDataReader myReader;
try{
conDatabase.Open();
myReader=cmdDatabase.ExecuteReader();
while(myReader.Read())
{
this.chart1.Series["Age"].Points.AddXY(myReader.GetString("FirstName"), myReader.GetInt32("Age"));
}
}
当我编译我的程序时,我得到了4条错误消息,与此行有关:
(myReader.GetString("FirstName"), myReader.GetInt32("Age"))
错误消息是:
'System.Data.Common.DbDataReader.GetString(int)'的最佳重载方法匹配有一些无效参数
参数1:无法从'字符串'转换为'int''System.Data.Common.DbDataReader.GetInt32(int)'的最佳重载方法匹配有一些无效参数
参数1:不能从'字符串'转换为'int'
SQL Server Express数据库使用VARCHAR
作为FirstName
, INT
使用Age
我做错了什么?
IDataReader
的.Get*
方法只采用要访问的列的索引,而不是列名。
所以,而不是
myReader.GetString("FirstName")
你需要类似的东西
myReader["FirstName"].ToString()
和
Convert.ToInt32(myReader.GetInt32("Age")))
如果你在紧密循环中这样做,那么你可以缓存名称:索引映射。
错误1'System.Data.Common.DbDataReader.GetString(int)'的最佳重载方法匹配有一些无效参数
DbDataReader.GetString
方法将参数作为int
而不是string
。
获取指定列的值作为String的一个实例。
public abstract string GetString(
int ordinal
)
使用此方法,以及FirstName
和Age
列的从零开始的列序号。
错误2参数1:不能从'字符串'转换为'int'
没有从string
到int
隐式对话。 你得到这个错误实际上是因为myReader.GetString("FirstName")
方法返回string
但你的AddXY()
方法可能除了int
作为第一个参数。
您应该使用GetString(0)或GetString(1)或GetString(2)
链接地址: http://www.djcxy.com/p/15893.html