一道关于C#中command对象的问题!请各位大侠帮帮我!很急!!!

SqlConnectionconn;privatevoidForm1_Load(objectsender,EventArgse){conn=newSqlConnectio... SqlConnection conn;
private void Form1_Load(object sender, EventArgs e)
{
conn = new SqlConnection("Server=(local);Initial Catalog=" + textBox1.Text.Trim()+";Integrated Security=True;");
conn.Open();

}

private void button1_Click(object sender, EventArgs e)
{
try
{
if (conn.State == ConnectionState.Open || textBox1.Text != "")
{
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = "select count(*) from" + textBox1.Text.Trim();
cmd.CommandType = CommandType.Text;
int i = Convert.ToInt32(cmd.ExecuteScalar());
label2.Text = "数据表中共有:" + i.ToString() + "数据条";
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
我想用command命令去查找数据表中的数据个数,但是无论我输入什么系统输出结果均显示只有一条数据,请问为什么?
附上图片:
展开
 我来答
syht2000
高粉答主

2013-07-08 · 关注我不会让你失望
知道大有可为答主
回答量:3万
采纳率:79%
帮助的人:1.4亿
展开全部
两个错误
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();
追问

你好,这位知心网友,我按照你所说的改了一下,但是结果还没有显示出来,我附图给你,麻烦您看看,真心感谢你!

其中db_test是我建的数据库名称!

追答

你大概没明白我的意思,你在这个textbox1中,倒底是想输入数据库名还是表名,如果你是想输入数据库名,那表名是什么,假定表名是table1,那就要改成

  conn = new SqlConnection("Server=(local);Initial Catalog=" + textBox1.Text.Trim()+";Integrated Security=True;");
//下面为
cmd.CommandText = "select count(*) from table1";

反之也一样,如果你想输入的是表名,而数据库名固定为db_test,那就是

conn = new SqlConnection("Server=(local);Initial Catalog=db_test;Integrated Security=True;");
//下面为
cmd.CommandText = "select count(*) from " + textBox1.Text.Trim();
Storm代理
2023-07-25 广告
StormProxies是一家提供动态代理服务器服务的企业,旨在帮助用户更好地管理网络访问和安全。以下是一些关于StormProxies的IP动态代理服务的特点:1. 高匿名性:StormProxies的动态代理服务器具有高匿名性,可以有效... 点击进入详情页
本回答由Storm代理提供
Jarhf
2013-07-08 · TA获得超过1862个赞
知道小有建树答主
回答量:1736
采纳率:25%
帮助的人:1033万
展开全部
细节问题:
连接字符串的Initial Catalog是指数据库名,但是你的查询语句中from后面跟的表名, 都是textBox1.Text,难道 数据库名称和表名是一样的?
不过这个不是出问题的原因, 问题原因是 select ...from语句后面应该有空格!否则结果永远是1
追问
麻烦这位兄台,你说的select ...from语句后面应该有空格是不是cmd.CommandText = "select count(*) from" + " "+textBox1.Text.Trim();这样呢?如果是这样的话结果我也试了一下,还是1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
清水栞
2013-07-08 · TA获得超过1547个赞
知道小有建树答主
回答量:1538
采纳率:50%
帮助的人:984万
展开全部

你的语句是select count(*) ,这条语句只返回一行结果

你取i,当然是1了

你应该写的是

            IDataReader rd = cmd.ExecuteReader();
            rd.Read();
            int count = (int)rd[0].ToString();

这个count就是你要的值 了

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2018-05-03
展开全部
这个问题这么久了,不知道你能不能看到,但我还是想说一下
兄弟相信我,这个问题很简单,我看了其他人的回答都没讲到点上去,

其实只要在"select count(*)from"这句的from后面加一个空格
改为"select count(*)from "这样就OK了
我最近也是被这个问题搞到头疼,网上的回答又不靠谱,只有自己瞎琢磨
你自己试试看吧,绝对没问题,希望你能看到
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式