类型' System.Data.SqlClient.SqlException'的第一次机会异常。发生在System.Data.dll
中其他信息:无效的对象名称'登录'。
这里的守则:
public partial class Form1 : MetroFramework.Forms.MetroForm
{
public Form1()
{
InitializeComponent();
}
SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=C:\Users\Igurek\Documents\Database.mdf;Integrated Security=True;Connect Timeout=30");
private void metroButton1_Click(object sender, EventArgs e)
{
this.Close();
}
private void metroButton2_Click(object sender, EventArgs e)
{
SqlDataAdapter sdf = new SqlDataAdapter("Select Count(*) From Login where Username='" + metroTextBox1.Text + "' and Password='" + metroTextBox2.Text + "'", con);
DataTable dt = new DataTable();
sdf.Fill(dt); // <--------- Here's the exception
if (dt.Rows.Count == 1)
{
Form1 f1 = new Form1();
f1.Show();
}
else
{
MessageBox.Show("Sprawdz Nazwe i Haslo");
}
}
}
截图:
答案 0 :(得分:0)
消息非常清楚:您的数据库中没有名为Login
的对象(表,视图)。您的查询正在尝试从该对象中进行选择。
Select Count(*) From Login where...
这里更大,更重要的问题是,您正在打开SQL注入攻击,因为您将字符串连接在一起以创建查询。您应该使用参数而不是这样做。
SqlDataAdapter sdf = new SqlDataAdapter(
"Select Count(*) From Login where Username=@UserName and Password=@Password", con);
command.Parameters.Add("@UserName", SqlDbType.NVarChar).Value = metroTextBox1.Text;
command.Parameters.Add("@Password", SqlDbType.NVarChar).Value = metroTextBox2.Text;
答案 1 :(得分:-1)
尝试将名称设置为您的计数:
Select Count(*) as Nb From Login