我有一个奇怪的问题。什么时候在数据库中进行第一次查询是错误的,但在第二次尝试时它完美地运行,而不是问题。我需要先运行它?
这是操作按钮:
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>
答案 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);