调试中显示了System.Data.SqlClient.SqlException”类型的第一次机会异常在 System.Data.dll 中发生 的错误

时间:2022-02-16 23:04:12
代码如下,查询不到数据库内的内容,总显示“没有成绩”,报错
调试中显示了System.Data.SqlClient.SqlException”类型的第一次机会异常在 System.Data.dll 中发生
的错误
sql语句是对的,在sql server里面试过可以查询
代码如下:

using System;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI.HtmlControls;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;

public partial class _Default : System.Web.UI.Page
{
          protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void BTQuery_Click(object sender, EventArgs e)
    {
        string connString;
        string Sname, Cname;
        //获取姓名和课程名
        Sname = TBSname.Text;
        Cname = TBCname.Text;
        //设置数据库连接串,使用系统认证
        connString = "Initial Catalog=jiaoxuedb;Data Source=KWONG;Integrated Security=SSPI;";
        SqlConnection Conn = new SqlConnection(connString);
        SqlCommand QueryCommand = new SqlCommand("SELECT Score FROM Student,Course,SC" +
            "WHERE Student.Sno=SC.Sno and Course.Cno=SC.Cno and" +
            "Sname=@Sname and Cname=@Cname",Conn);
        //Add the parameters for the SelectCommand
        QueryCommand.Parameters.Add("@SName", SqlDbType.Char, 8);
        QueryCommand.Parameters.Add("@Cname", SqlDbType.Char, 20);
        QueryCommand.Parameters["@SName"].Value = Sname;
        QueryCommand.Parameters["@CName"].Value = Cname;
        Conn.Open();
        //执行 QueryCommand.ExecuteScalar方法查询成绩
        try
        {
            Int32 ScoreValue = (Int32)QueryCommand.ExecuteScalar();
            LaScore.Text = Convert.ToString(ScoreValue);
        }
        catch//错误处理
        {
            LaScore.Text = "没有成绩";
        }
        finally
        {
            Conn.Close();
        }
    }
}

9 个解决方案

#1


可以打断点,看看然后把你的查询语句输出来,拿到数据库里面去执行试试看能出结果不?。没看出来你什么问题

#2


引用 1 楼 qq_23613747 的回复:
可以打断点,看看然后把你的查询语句输出来,拿到数据库里面去执行试试看能出结果不?。没看出来你什么问题


拿到数据库里面执行是可以出结果的,但在vs执行之后总显示没有成绩

#3


引用 1 楼 qq_23613747 的回复:
可以打断点,看看然后把你的查询语句输出来,拿到数据库里面去执行试试看能出结果不?。没看出来你什么问题


拿到数据库里面执行是可以出结果的,但在vs执行之后总显示没有成绩

#4


引用 1 楼 qq_23613747 的回复:
可以打断点,看看然后把你的查询语句输出来,拿到数据库里面去执行试试看能出结果不?。没看出来你什么问题


拿到数据库里面执行是可以出结果的,但在vs执行之后总显示没有成绩

#5


你可以换一个执行查询的方法。ExecuteScalar(),我不知道这个对不对,我查询从来没有用过这个方法,你试试另外的方法

#6


引用 5 楼 qq_23613747 的回复:
你可以换一个执行查询的方法。ExecuteScalar(),我不知道这个对不对,我查询从来没有用过这个方法,你试试另外的方法


还可以用哪些呢?

#7


ExecuteReader(),用法自己查吧。我也好久没有用了

#8


SqlDataReader myreader=mycomm.ExecuteReader();//将从数据源检索到的数据赋给myreader
for(int i=0;i<myreader.FieldCount;i++)

 s+=myreader.GetValue(i)
}//把字段的值赋给s;
Label1.Text=s;//最后让label显示检索到的字段的值.
百度的

#9


    connString = "Initial Catalog=jiaoxuedb;Data Source=KWONG;Integrated Security=SSPI;"; 总觉的这个有问题

#1


可以打断点,看看然后把你的查询语句输出来,拿到数据库里面去执行试试看能出结果不?。没看出来你什么问题

#2


引用 1 楼 qq_23613747 的回复:
可以打断点,看看然后把你的查询语句输出来,拿到数据库里面去执行试试看能出结果不?。没看出来你什么问题


拿到数据库里面执行是可以出结果的,但在vs执行之后总显示没有成绩

#3


引用 1 楼 qq_23613747 的回复:
可以打断点,看看然后把你的查询语句输出来,拿到数据库里面去执行试试看能出结果不?。没看出来你什么问题


拿到数据库里面执行是可以出结果的,但在vs执行之后总显示没有成绩

#4


引用 1 楼 qq_23613747 的回复:
可以打断点,看看然后把你的查询语句输出来,拿到数据库里面去执行试试看能出结果不?。没看出来你什么问题


拿到数据库里面执行是可以出结果的,但在vs执行之后总显示没有成绩

#5


你可以换一个执行查询的方法。ExecuteScalar(),我不知道这个对不对,我查询从来没有用过这个方法,你试试另外的方法

#6


引用 5 楼 qq_23613747 的回复:
你可以换一个执行查询的方法。ExecuteScalar(),我不知道这个对不对,我查询从来没有用过这个方法,你试试另外的方法


还可以用哪些呢?

#7


ExecuteReader(),用法自己查吧。我也好久没有用了

#8


SqlDataReader myreader=mycomm.ExecuteReader();//将从数据源检索到的数据赋给myreader
for(int i=0;i<myreader.FieldCount;i++)

 s+=myreader.GetValue(i)
}//把字段的值赋给s;
Label1.Text=s;//最后让label显示检索到的字段的值.
百度的

#9


    connString = "Initial Catalog=jiaoxuedb;Data Source=KWONG;Integrated Security=SSPI;"; 总觉的这个有问题