两个错误
1、数据库名和表名是两个不同的概念,你先确认一下到底是什么
Initial Catalog=" + textBox1.Text.Trim()中的textBox1.Text.Trim()的位置应该是数据库名,而"select count(*) from" + textBox1.Text.Trim();中的textbox1 位置应该是表名,假定你的textbox1是要输入数据库名,而表名是table1的话,后面就应该改成cmd.CommandText = "select count(*) from table1";
注:不过我猜你的原意,应该是在运行时输入表名的,而数据库名应该是固定的,那就自己调整一下就行了,也就是假如数据库为db_15,那就改成
conn = new SqlConnection("Server=(local);Initial Catalog=db_15;Integrated Security=True;");
下面为
cmd.CommandText = "select count(*) from " + textBox1.Text.Trim();
2、from后掉了空格,你原本的语句是
cmd.CommandText = "select count(*) from" + textBox1.Text.Trim();
实际上应该改成
cmd.CommandText = "select count(*) from " + textBox1.Text.Trim();
细节问题:
连接字符串的Initial Catalog是指数据库名,但是你的查询语句中from后面跟的表名, 都是textBox1.Text,难道 数据库名称和表名是一样的?
不过这个不是出问题的原因, 问题原因是 select ...from语句后面应该有空格!否则结果永远是1
你的语句是select count(*) ,这条语句只返回一行结果
你取i,当然是1了
你应该写的是
IDataReader rd = cmd.ExecuteReader();
rd.Read();
int count = (int)rd[0].ToString();
这个count就是你要的值 了
这个问题这么久了,不知道你能不能看到,但我还是想说一下
兄弟相信我,这个问题很简单,我看了其他人的回答都没讲到点上去,
其实只要在"select count(*)from"这句的from后面加一个空格
改为"select count(*)from "这样就OK了
我最近也是被这个问题搞到头疼,网上的回答又不靠谱,只有自己瞎琢磨
你自己试试看吧,绝对没问题,希望你能看到