简体   繁体   English

SQL COMMAND返回null时如何显示警报消息? ASP.NET C#

[英]How to display alert message when SQL COMMAND return null? ASP.NET C#

I want that when SqlCommand returns zero result or null , then show alert message. 我希望当SqlCommand返回零结果或null ,然后显示警报消息。 I try but it always giving me 我尝试,但它总是给我

Object reference not set to an instance of an object. 你调用的对象是空的。

Here is my code 这是我的代码

ASPX.CS 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();
        }
    }
}

try this 尝试这个

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

also replace your code as 也将您的代码替换为

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

ExecuteScalar only returns one value. ExecuteScalar仅返回一个值。 You have to make sure your query only returns that value. 您必须确保查询仅返回该值。

use ExecuteReader 使用ExecuteReader

gives you a data reader back which will allow you to read all of the columns of the results a row at a time. 给您一个数据读取器,使您一次可以读取结果的所有列。

An example would be pulling profile information for one or more users. 一个示例是为一个或多个用户提取配置文件信息。

SELECT * FROM pro WHERE id = '123456' 选择*从专业人士ID ='123456'

Here is my suggestions: 这是我的建议:

  1. Data binding is one thing, display message is another. 数据绑定是一回事,显示消息是另一回事。 You should do data boning first, then display any message to users. 您应该先进行数据绑定,然后再向用户显示任何消息。
  2. Do remember to close DB connection, or it will be a disaster. 请记住关闭数据库连接,否则将是一场灾难。
  3. I don't think you have to data binding in a loop, just do it one time. 我认为您不必循环进行数据绑定,只需执行一次即可。
  4. You can refer "registerstartupscript" in MSDN. 您可以在MSDN中引用“ registerstartupscript”。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM