初试存储过程返回记录集出错:
未处理的“System.Exception”类型的异常出现在 system.windows.forms.dll 中。
其他信息: 复杂的 DataBinding 接受 IList 或 IListSource 作为数据源
有关的代码:
MainFrm n=(MainFrm)MainFrm.ActiveForm;
System.Data.SqlClient.SqlConnection b=n.sqlConnection1;
SqlCommand scm=new SqlCommand();
scm.Connection=b;
scm.CommandType=CommandType.StoredProcedure ;
scm.CommandText="query_client_base";
//存储过程的参数
SqlParameter Sp= scm.Parameters.Add(
"@czydm",SqlDbType.Char ,4,"1111");
Sp.Value="1111";
Sp= scm.Parameters.Add(
"@clientid",SqlDbType.Int,4);
Sp.Value=0;
Sp= scm.Parameters.Add(
"@flagp",SqlDbType.TinyInt,4);
Sp.Value=127;
Sp= scm.Parameters.Add(
"@flagsale",SqlDbType.SmallInt,4);
Sp.Value=127;
Sp= scm.Parameters.Add(
"@clientcode",SqlDbType.Char,4);
Sp.Value="";
Sp= scm.Parameters.Add(
"@clientname",SqlDbType.Char,4);
Sp.Value="";
Sp= scm.Parameters.Add(
"@areacode",SqlDbType.SmallInt ,4);
Sp.Value=255;
Sp= scm.Parameters.Add(
"@supplycode",SqlDbType.Char,4);
Sp.Value="";
Sp= scm.Parameters.Add(
"@rolesy",SqlDbType.Int ,4);
Sp.Value=127;
Sp= scm.Parameters.Add(
"@rolecy",SqlDbType.Int,4);
Sp.Value=127; scm.Connection=b;
SqlDataReader Dr=scm.ExecuteReader() ;
Em.DataSource=Dr;
未处理的“System.Exception”类型的异常出现在 system.windows.forms.dll 中。
其他信息: 复杂的 DataBinding 接受 IList 或 IListSource 作为数据源
有关的代码:
MainFrm n=(MainFrm)MainFrm.ActiveForm;
System.Data.SqlClient.SqlConnection b=n.sqlConnection1;
SqlCommand scm=new SqlCommand();
scm.Connection=b;
scm.CommandType=CommandType.StoredProcedure ;
scm.CommandText="query_client_base";
//存储过程的参数
SqlParameter Sp= scm.Parameters.Add(
"@czydm",SqlDbType.Char ,4,"1111");
Sp.Value="1111";
Sp= scm.Parameters.Add(
"@clientid",SqlDbType.Int,4);
Sp.Value=0;
Sp= scm.Parameters.Add(
"@flagp",SqlDbType.TinyInt,4);
Sp.Value=127;
Sp= scm.Parameters.Add(
"@flagsale",SqlDbType.SmallInt,4);
Sp.Value=127;
Sp= scm.Parameters.Add(
"@clientcode",SqlDbType.Char,4);
Sp.Value="";
Sp= scm.Parameters.Add(
"@clientname",SqlDbType.Char,4);
Sp.Value="";
Sp= scm.Parameters.Add(
"@areacode",SqlDbType.SmallInt ,4);
Sp.Value=255;
Sp= scm.Parameters.Add(
"@supplycode",SqlDbType.Char,4);
Sp.Value="";
Sp= scm.Parameters.Add(
"@rolesy",SqlDbType.Int ,4);
Sp.Value=127;
Sp= scm.Parameters.Add(
"@rolecy",SqlDbType.Int,4);
Sp.Value=127; scm.Connection=b;
SqlDataReader Dr=scm.ExecuteReader() ;
Em.DataSource=Dr;
其实可以用比较方便的方法,就是在“数据集设计器”中用创建“TableAdapter”的方法建立一个datatable。然后之间把它拉到Winform中就可以了。
在“数据集设计器”中用创建“TableAdapter”的方法建立一个datatable这个怎么弄?或提供相关网址?
第一步是创建一个 Windows 应用程序。创建新的 Windows 应用程序项目
在 Visual Studio 中,从“文件”菜单创建一个新项目。 在“项目类型”窗格中选择一种编程语言。在“模板”窗格中单击“Windows 应用程序”。将项目命名为 TableAdapterQueriesWalkthrough,然后单击“确定”。 Visual Studio 随即将该项目添加到“解决方案资源管理器”,并在设计器中显示一个新窗体。 使用 TableAdapter 创建数据库数据源
此步骤使用“数据源配置向导”创建基于 Northwind 示例数据库中 Customers 表的数据源。必须具有访问 Northwind 示例数据库的权限才能创建连接。有关设置 Northwind 示例数据库的信息,请参见如何:安装示例数据库。创建数据源
在“数据”菜单上单击“显示数据源”。在“数据源”窗口中,选择“添加新数据源”,启动“数据源配置向导”。在“选择数据源类型”页上选择“数据库”,然后单击“下一步”。在“选择您的数据连接”页面上执行下列操作之一: 如果下拉列表中包含到 Northwind 示例数据库的数据连接,请选择该连接。 - 或 -选择“新建连接”,以启动“添加/修改连接”对话框。有关更多信息,请参见“添加/修改连接”对话框(通用)。如果数据库需要密码,请选择该选项以包括敏感数据,再单击“下一步”。在“将连接字符串保存到应用程序配置文件”页面上单击“下一步”。在“选择数据库对象”页面上展开“表”节点。选择“Customers”表,然后单击“完成”。“NorthwindDataSet”即被添加到您的项目中,并且“数据源”窗口中出现“Customers”表。在数据集设计器中打开数据集
在“数据集设计器”中打开数据集
在“数据源”窗口中右击 NorthwindDataset。在快捷菜单上,选择“使用设计器编辑数据集”。NorthwindDataset 在“数据集设计器”中打开。向 CustomersTableAdapter 中添加第二个查询
向导通过 Customers 数据表和 CustomersTableAdapter 创建数据集。本节演练将向 CustomersTableAdapter 添加第二个查询。向 CustomersTableAdapter 添加查询
将一个“查询”从“工具箱”的“数据集”选项卡拖动到“Customers”表。TableAdapter 查询配置向导将打开。选择“使用 SQL 语句”,然后单击“下一步”。选择“选择(返回行)”,然后单击“下一步”。向该查询添加一个 WHERE 子句,结果为: 复制代码
SELECT CustomerID, CompanyName, ContactName, ContactTitle, Address, City, Region, PostalCode, Country, Phone, Fax
FROM Customers
WHERE City = @City
注意
如果正在使用 Access 版的 Northwind,则请使用问号替换 @City 参数。 (SELECT CustomerID, CompanyName, ContactName, ContactTitle, Address, City, Region, PostalCode, Country, Phone, Fax FROM Customers WHERE City = ?)
在“选择要生成的方法”页上,将“填充 DataTable”方法命名为 FillByCity。注意
本演练中未使用“返回 DataTable”方法,因此可以清除该复选框或使用默认名称。
单击“下一步”完成该向导。FillByCity 查询即被添加到 CustomersTableAdapter。在窗体上添加执行其他查询的代码
执行查询
在“解决方案资源管理器”中选择“Form1”,然后单击“视图设计器”。将“Customers”节点从“数据源”窗口拖动到“Form1”上。通过从“视图”菜单选择“代码”更改为代码视图。用下面运行 FillByCity 查询的代码替换 Form1_Load 事件处理程序中的代码。Visual Basic 复制代码
Dim cityValue As String = "Seattle"
CustomersTableAdapter.FillByCity(NorthwindDataSet.Customers, cityValue)
C# 复制代码
string cityValue = "Seattle";
customersTableAdapter.FillByCity(northwindDataSet.Customers, cityValue);
J# 复制代码
String cityValue = "Seattle";
northwindDataSetCustomersTableAdapter.FillByCity(northwindDataSet.get_Customers(), cityValue);
运行应用程序
运行应用程序
按 F5。网格将由 City 值为 Seattle 的客户进行填充。
腰缠70元到月入近10万
http://www.hunbei.com.cn/Article/ArticleShow.asp?ArticleID=453IT工程师 毕业4年我年薪涨到30万
http://www.hunbei.com.cn/Article/ArticleShow.asp?ArticleID=51126岁青年坐拥千万域名资产 从小玩家变成CEO
http://www.hunbei.com.cn/Article/ArticleShow.asp?ArticleID=515程序员的酸甜苦辣:告别Coding
http://www.hunbei.com.cn/Article/ArticleShow.asp?ArticleID=341从月薪3500到700万(一)
http://www.hunbei.com.cn/Article/ArticleShow.asp?ArticleID=170网络草根月赚3000的十种方法
http://www.hunbei.com.cn/Article/ArticleShow.asp?ArticleID=517如果我是女的 我肯定不会嫁给做网站的
http://www.hunbei.com.cn/Article/ArticleShow.asp?ArticleID=512
Em.DataSource=Dr;-------------------
这2句话有问题,应为SqlDataReader是以流式返回数据库数据的,所以是不会从IList或IListSource派生来的,因此不能绑定成功。你把SqlDataReader换成DataSet就行了