指定演员表无效?

crs*_*sMC 10 c# asp.net

我有一个在ASP.net中创建的表,我想在页面加载后用数据库中的信息填充表.我收到一个指定的强制转换无效的错误.我究竟做错了什么?继承我的代码

public string getData()
{
        string htmlStr = "";

        SqlConnection conn = new SqlConnection(connString);
        SqlCommand command = conn.CreateCommand();
        command.CommandText = "SELECT * from INFO";
        conn.Open();
        SqlDataReader reader = command.ExecuteReader();

        while (reader.Read())
        {
            DateTime Date = reader.GetDateTime(0);
            DateTime Time = reader.GetDateTime(1);
            htmlStr += "<tr><td>" + Date + "</td><td>"  + Time + "</td></tr>";                  
        }

        conn.Close();

        return htmlStr;
}
Run Code Online (Sandbox Code Playgroud)
<table style="width:100%">
                <caption>INFO</caption>
                <tr>
                    <td> Date </td>
                    <td> Time </td>
                </tr>
                    <%=getData()%>
                </table>
Run Code Online (Sandbox Code Playgroud)

这是我的错误:

这是我的错误

它从上面的代码中抛出此行的异常:

DateTime Date = reader.GetDateTime(0);
Run Code Online (Sandbox Code Playgroud)

Gra*_*ICA 10

来自你的评论:

这条线DateTime Date = reader.GetDateTime(0);正在抛出异常

第一列不是有效的DateTime.最有可能的是,您的表中有多列,并且您通过运行此查询来检索所有列:

SELECT * from INFO
Run Code Online (Sandbox Code Playgroud)

将其替换为检索您感兴趣的两列的查询:

SELECT YOUR_DATE_COLUMN, YOUR_TIME_COLUMN from INFO
Run Code Online (Sandbox Code Playgroud)

然后再次尝试读取值:

var Date = reader.GetDateTime(0);
var Time = reader.GetTimeSpan(1);  // equivalent to time(7) from your database
Run Code Online (Sandbox Code Playgroud)

要么:

var Date = Convert.ToDateTime(reader["YOUR_DATE_COLUMN"]);
var Time = (TimeSpan)reader["YOUR_TIME_COLUMN"];
Run Code Online (Sandbox Code Playgroud)

  • 这就是答案,你选择了错误的列,如果你的表有一个标识表,那么你最有可能选择0的id.始终使用`reader ["columnname"]`而不是数字来指定列名,因为表结构总是可以更改. (2认同)