来自SQL Server数据库的对象名称无效?
我得到这个错误:在这条线来自SQL Server数据库的对象名称无效?
Invalid object name 'Members'
:
int MemberExist = (int)check_Member.ExecuteScalar();
以我目前的DB,看起来像这样:http://imgur.com/6fyKGn3为什么这是不是可以执行?
代码:
// Get the connection
SqlConnection DBConnection = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=""E:\DS\Prac5\Part1\App_Data\MyDatabase.mdf"";Integrated Security=True");
SqlDataReader Reader = null;
DBConnection.Open();
SqlCommand check_Member = new SqlCommand("SELECT * FROM Members WHERE MembershipID = FirstName AND LastName = @Txtnput", DBConnection);
check_Member.Parameters.AddWithValue("@Txtnput", txtMembershipid.Text);
int MemberExist = (int)check_Member.ExecuteScalar();
它看起来像你必须改变查询成为
"SELECT count(*) FROM Members WHERE MembershipID = FirstName AND LastName = @Txtnput"
因为ExecutesScalar
预计从查询一个价值回归。
嗯,我只是试过,但它仍然给我同样的例外。 “无效的对象名'成员'。” – user4814432
在连接字符串中似乎有些错误。
Data Source=(LocalDb)\v11.0;Initial Catalog=Database;Integrated Security=SSPI;AttachDBFilename='E:\DS\Prac5\Part1\App_Data\MyDatabase.mdf'
您还可以使用
"SELECT TOP 1 MembershipID FROM Members WHERE MembershipID = FirstName AND LastName = @Txtnput"
确保你的表名是成员。您可以在模型或数据库中进行检查。
bool IsMemberExist;
object MembershipId = check_Member.ExecuteScalar();
if(MembershipId != null)
{
IsMemberExist = true;
//Do other things here. //Convert.ToInt32(MembershipId)
}
不幸的是我的桌子是绝对正确的名字,你可以通过我发布的imgur链接看到。 – user4814432
啊,是的,谢谢你,我的连接字符串是不正确的。 – user4814432
请确保您是否数据库MyDatabase.mdf
包含名为Members
表。 请用以下方式测试。
SqlCommand check_table= "select case when exists((select * from information_schema.tables where table_name = '" + tableName + "')) then 1 else 0 end");
int IsTableExists = (int)check_table.ExecuteScalar();
if(IsTableExists ==1)
{
SqlCommand check_Member = new SqlCommand("SELECT * FROM Members WHERE MembershipID = FirstName AND LastName = @Txtnput", DBConnection);
check_Member.Parameters.AddWithValue("@Txtnput", txtMembershipid.Text);
int MemberExist = (int)check_Member.ExecuteScalar();
}
UPDATE: 能否请您与表名以及更新的架构名称查询。
如:SqlCommand check_Member = new SqlCommand("SELECT * FROM dbo.Members WHERE MembershipID = FirstName AND LastName = @Txtnput", DBConnection);
或者更具体MyDatabase.dbo.Members
它据我所知:/ – user4814432
ok ..你可以尝试新的更新在我的答案。 – NCA
试试这个连接字符串,并检查
SqlConnection DBConnection = new SqlConnection(@"Data Source=(LocalDB)\v11.0;
AttachDbFilename=E:\DS\Prac5\Part1\App_Data\Database.mdf;Integrated Security=True")
去掉“中没有必要,因为之间有开始也@改变MyDatabase.mdf到Database.mdf,因为在图片中它是Database.mdf
@ user4814432检查这一点 – Sachu
将Mydatabase.mdf更改为Da tabase.mdf并删除“之间检查我的回答下面 – Sachu