C# SqlDataAdapter 调用带参数存储过程
stringMyConn="DataSource=XCFW;InitialCatalog=sbgl;UserID=sa";SqlDataAdapterSelectAdap...
string MyConn = "Data Source=XCFW;Initial Catalog=sbgl;User ID=sa";
SqlDataAdapter SelectAdapter = new SqlDataAdapter();
SqlConnection MyConnection = new SqlConnection(MyConn);
SqlCommand MyCommand = new SqlCommand(procname, MyConnection);
MyCommand.CommandType = CommandType.StoredProcedure;
MyCommand.Parameters.Add("@姓名",SqlDbType.Char,10);
MyCommand.Parameters["@姓名"].Value=@fields;
MyConnection.Open();
SelectAdapter.MissingSchemaAction=MissingSchemaAction.AddWithKey;
SelectAdapter.SelectCommand.ExecuteNonQuery();
MyConnection.Close();
DataTable dt=new DataTable();
SelectAdapter.Fill(dt);
存储过程单独运行时是能查出数据的,然后不知道为什么这里查出来就没有数据了,各位大侠帮忙看一下哪里出问题了,财富有价,知识无价,回答得好的,高分呈上,就此谢过 展开
SqlDataAdapter SelectAdapter = new SqlDataAdapter();
SqlConnection MyConnection = new SqlConnection(MyConn);
SqlCommand MyCommand = new SqlCommand(procname, MyConnection);
MyCommand.CommandType = CommandType.StoredProcedure;
MyCommand.Parameters.Add("@姓名",SqlDbType.Char,10);
MyCommand.Parameters["@姓名"].Value=@fields;
MyConnection.Open();
SelectAdapter.MissingSchemaAction=MissingSchemaAction.AddWithKey;
SelectAdapter.SelectCommand.ExecuteNonQuery();
MyConnection.Close();
DataTable dt=new DataTable();
SelectAdapter.Fill(dt);
存储过程单独运行时是能查出数据的,然后不知道为什么这里查出来就没有数据了,各位大侠帮忙看一下哪里出问题了,财富有价,知识无价,回答得好的,高分呈上,就此谢过 展开
5个回答
展开全部
把SelectAdapter.SelectCommand.ExecuteNonQuery(); 改成
SelectAdapter.SelectCommand = MyCommand;
SelectAdapter.SelectCommand = MyCommand;
更多追问追答
追问
改成后还是一样
追答
MyConn 没有密码;procname是否有值
如果还不行,我这里有根据你的代码,调试通过的代码,可以发邮件给你。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
光点科技
2023-08-15 广告
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
展开全部
MySQL教程4 MySQL8运算符、函数、存储过程及新增数据类型 17.之创建带有IN和OUT参数的存储过程 学习猿地
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
string MyConn = "Data Source=XCFW;Initial Catalog=sbgl;User ID=sa";
怎么会只有User ID啊 Password呢?难道是不需要Password?
MyConnection.Open(); 你在这边断点调试.
DataTable dt=new DataTable(); 括号里没有表名
怎么会只有User ID啊 Password呢?难道是不需要Password?
MyConnection.Open(); 你在这边断点调试.
DataTable dt=new DataTable(); 括号里没有表名
追问
DataTable dt=new DataTable(); 括号里没有表名 这点没有错的,断点调试显示 dt的值为空,已经排除参数传递错误及存储过程中的错误
追答
dt为空,说明还是没有读取到数据啊,你每步都断点调试一下。看看在哪边读不到数据。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
MyConnection.Close();
放到最后试试
还有SelectAdapter.MissingSchemaAction=MissingSchemaAction.AddWithKey; 这句是否去掉
放到最后试试
还有SelectAdapter.MissingSchemaAction=MissingSchemaAction.AddWithKey; 这句是否去掉
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
procname 这个应该是你存储过程的名称吧,可是 这个变量的值是什么?至少在你贴出来的代码里没看到
追问
以上是在函数
public void pro(string procname,string @fields)
{}中的
其中procname是存储过程名@fields是我要传的参数,这里关键是SqlDataAdapter与存储过程的调用的问题,觉得代码应该不是这样写的..
ALTER PROCEDURE [dbo].[按姓名查询]
@姓名 char(10)
AS
select 姓名... like '%'+rtrim(@姓名)+'%' 这里没有反回值,不知道需不需要返回值,不知道这有没有错
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询