如何显示警报消息时,SQL命令返回null?ASP.净c#

本文关键字:返回 命令 SQL null ASP 何显示 显示 消息 | 更新日期: 2023-09-27 17:52:16

我想当SqlCommand返回零结果或null时,然后显示警报消息。我试过了,但它总是给我

对象引用未设置为对象的实例。

我的代码

ASPX.CS

public void gettable()
{
    string user = Session["name"].ToString();
    SqlConnection cnn = new SqlConnection("Data Source=LIFE_WELL;Initial Catalog=db_compiler;Integrated Security=True");
    //string db = Session["value"].ToString();
    string db = Session["value"].ToString();
    SqlCommand cmd3 = new SqlCommand("SELECT Database_id from Create_db WHERE Database_Name='" + db + "'", cnn);
    cnn.Open();
    string dbid = cmd3.ExecuteScalar().ToString();
    SqlCommand cmd4 = new SqlCommand("SELECT DISTINCT (Table_Name) from tbl_field WHERE Database_id=" + dbid + "", cnn);
    string tbl_name = cmd4.ExecuteScalar().ToString();
    DataTable dt = new DataTable();
    SqlDataAdapter da = new SqlDataAdapter(cmd4);
    da.Fill(dt);
    if (dt.Rows.Count == 0)
    {
        Response.Write("<Script>alert('" + Server.HtmlEncode("No Tables Found") + "')</Script>");
    }
    else
    {
        foreach (DataRow dr in dt.Rows)
        {
            GridView1.DataSource = dt;
            GridView1.DataBind();
            cnn.Close();
        }
    }
}

如何显示警报消息时,SQL命令返回null?ASP.净c#

try this

if (dt == null || dt.Rows.Count <= 0)
{
 Response.Write("<Script>alert('No Tables Found')</Script>");
 return;
}

也可以将你的代码替换为

string tbl_name = Convert.ToString(cmd4.ExecuteScalar());

ExecuteScalar只返回一个值。你必须确保你的查询只返回那个值。

使用ExecuteReader

为您提供了一个数据读取器,它允许您一次读取一行结果的所有列。

一个例子是为一个或多个用户提取概要信息。

SELECT * FROM pro WHERE id = '123456'

以下是我的建议:

  1. 数据绑定是一回事,显示消息是另一回事。你应该先做数据绑定,然后再显示任何消息给用户。
  2. 请记住关闭数据库连接,否则将是一场灾难。
  3. 我不认为你必须在循环中绑定数据,只做一次。
  4. 你可以在MSDN中引用"registerstartupscript"