一道关于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命令去查找数据表中的数据个数,但是无论我输入什么系统输出结果均显示只有一条数据,请问为什么?
附上图片: 展开
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命令去查找数据表中的数据个数,但是无论我输入什么系统输出结果均显示只有一条数据,请问为什么?
附上图片: 展开
展开全部
两个错误
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();
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();
追答
你大概没明白我的意思,你在这个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();
展开全部
细节问题:
连接字符串的Initial Catalog是指数据库名,但是你的查询语句中from后面跟的表名, 都是textBox1.Text,难道 数据库名称和表名是一样的?
不过这个不是出问题的原因, 问题原因是 select ...from语句后面应该有空格!否则结果永远是1
连接字符串的Initial Catalog是指数据库名,但是你的查询语句中from后面跟的表名, 都是textBox1.Text,难道 数据库名称和表名是一样的?
不过这个不是出问题的原因, 问题原因是 select ...from语句后面应该有空格!否则结果永远是1
追问
麻烦这位兄台,你说的select ...from语句后面应该有空格是不是cmd.CommandText = "select count(*) from" + " "+textBox1.Text.Trim();这样呢?如果是这样的话结果我也试了一下,还是1
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的语句是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了
我最近也是被这个问题搞到头疼,网上的回答又不靠谱,只有自己瞎琢磨
你自己试试看吧,绝对没问题,希望你能看到
兄弟相信我,这个问题很简单,我看了其他人的回答都没讲到点上去,
其实只要在"select count(*)from"这句的from后面加一个空格
改为"select count(*)from "这样就OK了
我最近也是被这个问题搞到头疼,网上的回答又不靠谱,只有自己瞎琢磨
你自己试试看吧,绝对没问题,希望你能看到
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询