我正在尝试创建数据库读取器。我在其中添加要在文本框中的数据库中运行的查询的位置,然后单击按钮并在datagridview中获取结果
public partial class Form1 : Form
{
SqlCommand cmd = new SqlCommand();
SqlDataReader rdr;
DataSet ds;
SqlDataAdapter da;
public Form1()
{
InitializeComponent();
}
private void btnEnter_Click(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection("Data Source=Apples;Initial Catalog=Abpee;Integrated Security=True;user id=sash;password=12345");
con.Open();
cmd.CommandText = txtSqlString.Text.Trim();
cmd.Connection = con;
rdr = cmd.ExecuteReader();
bool temp = false;
while (rdr.Read())
{
txtSqlString.Text = Convert.ToString(rdr[0].ToString());
temp = true;
}
if (temp == false)
MessageBox.Show("not found");
con.Close();
con.Open();
ds = new DataSet();
da = new SqlDataAdapter(" ", con);
da.Fill(ds);
con.Close();
dgvResult.ReadOnly = true;
dgvResult.DataSource = ds.Tables;
}
}
答案 0 :(得分:1)
您没有为SqlDataAdapter
设置任何sql命令,也没有正确设置DataSource。
da = new SqlDataAdapter(txtSqlString.Text.Trim(), con);
da.Fill(ds);
con.Close();
dgvResult.ReadOnly = true;
dgvResult.DataSource = ds.Tables[0];
加上至少用try .. catch
包装它,以在失败时通知用户。我应该说这是非常危险的代码。