无法找到表0

做查找时出现的问题privatevoidbutton1_Click(objectsender,EventArgse){if(txtName.Text.Trim()==""... 做查找时出现的问题
private void button1_Click(object sender, EventArgs e)
{

if (txtName.Text.Trim() == "" && txtPhone.Text.Trim() == "")
{
MessageBox.Show("姓名和电话至少填写一项");
return;
}
try
{
SqlConnection conn = new SqlConnection();
conn.ConnectionString = "Data Source=LENOVO-THINK\\SQLEXPRESS;Initial Catalog=phonebook;Integrated Security=True";
SqlCommand cmd = new SqlCommand("查找联系人", conn);
cmd.Connection = conn;
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@name", SqlDbType.VarChar, 50);
cmd.Parameters.Add("@phone", SqlDbType.VarChar, 200);
cmd.Parameters.Add("@user", SqlDbType.VarChar, 50);
cmd.Parameters["@name"].Value = txtName.Text.Trim();
cmd.Parameters["@phone"].Value = txtPhone.Text.Trim();
cmd.Parameters["@user"].Value = strUserName;

SqlDataAdapter sda = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
sda.Fill(ds);
dgvResult.DataSource = ds.Tables[0];
this.Height = 250;
}
catch (Exception ee)
{
MessageBox.Show(ee.Message);
return;
}
}

查找联系人是个存储过程
展开
 我来答
翡缘随心
2010-05-19
知道答主
回答量:19
采纳率:0%
帮助的人:0
展开全部
虽然你做了链接数据库的代码,但是你进行数据库操作的时候,你根本就没有打开数据库。
其次就是数据操作完之后也没有关闭数据。
ozyang
2010-05-25 · TA获得超过1330个赞
知道小有建树答主
回答量:749
采纳率:0%
帮助的人:566万
展开全部
ds为空,先判断ds是否为空,不为空ds.Tables[0]
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
javacfy
2010-05-29 · TA获得超过119个赞
知道答主
回答量:45
采纳率:0%
帮助的人:0
展开全部
你要先定义存储过程“查找联系人”,在数据库中定义
CREATE PROCEDURE 查找联系人(
。。。。。。。。。。。。。。。

GO
中间。。。。自个定义啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
HSC_KISS
2010-05-20 · TA获得超过148个赞
知道答主
回答量:32
采纳率:0%
帮助的人:37.4万
展开全部
首先

SqlCommand cmd = new SqlCommand("查找联系人", conn);

cmd.Connection = conn;

这两句代码重复使cmd指定了conn两次,呵呵 看来你粗心啦

还有你说你是用储存过程,但是很明显你把执行参数化查询和调用储存过程搞错了!!

先看看你的代码:

SqlCommand cmd = new SqlCommand("查找联系人", conn);

如果你的代码中的确有“查找联系人”这个select语句的话,那么它必需包含有

@Name...等等的参数,而且这是一个参数化查询而不是储存过程

假如“查找联系人”语句是:select Sex,Age,Address from book where

Name=@name and Phone@phone and User=@user

一定不能设置 cmd.CommandType = CommandType.StoredProcedure;

因为这只是一个参数化查询!!

必须设成:cmd.CommandType=CommandType.Text或不设置保持默认

如果你确实要用储存过程的话 那么你储存过程必须在Sql Sever存在!也就是在

数据库里面!!

而且你的代码必须这样写:

把你的

SqlCommand cmd = new SqlCommand("查找联系人", conn);

cmd.Connection = conn;

这两句改成:

SqlCommand cmd = new SqlCommand();

cmd.Connection = conn;

保留

cmd.CommandType = CommandType.StoredProcedure;不变,并且

加多一句:

cmd.CommandText="你的储存过程名字";

祝你成功!!呵呵~~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式