首次查询数据库时出错

时间:2014-01-04 13:30:32

标签: c# sql sql-server database

我有一个奇怪的问题。什么时候在数据库中进行第一次查询是错误的,但在第二次尝试时它完美地运行,而不是问题。我需要先运行它?

这是操作按钮:

private void button1_Click(object sender, EventArgs e)
{
    SqlConnection con = new SqlConnection(AcessoBD.ConnectionString);

    try
    {
        con.Open();

        SqlCommand cmd = new SqlCommand("con", con);
        //cmd.CommandType = CommandType.Text;
        cmd.CommandText = "SELECT * FROM usuario";

        //cmd.ExecuteNonQuery();

        SqlDataReader dr = cmd.ExecuteReader();

        if (dr.Read())
        {
           MessageBox.Show(dr["usuario"].ToString());
        }
    }
    catch (Exception ex)
    {
        throw ex;
    }
    finally
    {
        con.Close();
    }
}

班级AcessoBD

public class AcessoBD
{
        static public String ConnectionString
        {
            get
            {    // pega a string de conexão do web.config
                return ConfigurationManager.ConnectionStrings["Conexao"].ConnectionString;
                //return WebConfigurationManager.ConnectionStrings["Conexao"].ConnectionString;
            }
        }
    }

App.config

<connectionStrings>
   <add name="Conexao"
        connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Base\Database.mdf;Integrated Security=True"
        providerName="System.Data.SqlClient" />
</connectionStrings>

2 个答案:

答案 0 :(得分:2)

这是因为这一行:

cmd.ExecuteNonQuery();

删除它。

ExcuteNonQuery用于执行没有任何表结果的查询,如INSERT INTO ...

在这一行:

MessageBox.Show(dr["usuario"].ToString());

如果你想从表中获取一个字符串,你应该这样使用:

MessageBox.Show(dr.GetString(colIndex));

答案 1 :(得分:0)

是的,看起来你有两个问题。

改变这个:

SqlCommand cmd = new SqlCommand("con", con);
cmd.CommandText = "SELECT * FROM usuario"; 

要:

SqlCommand cmd = new SqlCommand("SELECT * FROM usuario", con);