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作为FirstNameINT使用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
)

使用此方法,以及FirstNameAge列的从零开始的列序号。

错误2参数1:不能从'字符串'转换为'int'

没有从stringint隐式对话。 你得到这个错误实际上是因为myReader.GetString("FirstName")方法返回string但你的AddXY()方法可能除了int作为第一个参数。


您应该使用GetString(0)或GetString(1)或GetString(2)

链接地址: http://www.djcxy.com/p/15893.html

上一篇: SQL Server Express and C# : Database Charting

下一篇: Invalid expression term error in the code