关于DataAdapter的问题-----Fill: SelectCommand.Connection 属性尚未初始化。

本文讲述了在使用DataAdapter填充数据时遇到的问题及解决办法。当使用普通的SQL语句而非存储过程时,通常无需显式调用数据库连接的Open方法;但在使用存储过程时,则必须先打开连接。

       在使用DataAdapter的时候,最初看资料和视频都是这样说的: 只要在用DataAdapter的时候(非存储过程,SQL语句),是不需要 conn.Open()的(打开数据库),原来一只也是那样写,不加Open()这个函数,这次写了存储过程,发现不用Open()打报错

            提示

                 Fill: SelectCommand.Connection 属性尚未初始化。

  后事try几次明白了,要用Open()打开数据库就可以了。

                                                                                仅为自己记录学习,(非决对正确答案)

using Npgsql; using System; using System.Collections.Generic; using System.Configuration; using System.Data; using System.Data.SqlClient; using System.Linq; using System.Text; using System.Threading.Tasks; namespace WinStudent//命名空间 { public class SqlHelper { private static readonly string myDatabaseString; static SqlHelper() { var builder = new NpgsqlConnectionStringBuilder { Host = "127.0.0.1", Port = 5432, Database = "le5le-app", Username = "le5le", Password = "admin" }; string myDatabaseString = builder.ConnectionString; } public static object ExecuteScalar(string sql,params SqlParameter[] paras) { object o = null; using (NpgsqlConnection conn = new NpgsqlConnection(myDatabaseString)) { NpgsqlCommand cmd = new NpgsqlCommand(sql, conn); cmd.Parameters.Clear(); cmd.Parameters.AddRange(paras); conn.Open(); o = cmd.ExecuteScalar(); conn.Close(); } return o; } public static DataTable GetDataTable(string sql,params SqlParameter[] paras) { DataTable dataTable = new DataTable(); using (NpgsqlConnection conn = new NpgsqlConnection(myDatabaseString)) { NpgsqlCommand cmd = new NpgsqlCommand(sql, conn); if (paras != null) { cmd.Parameters.Clear(); cmd.Parameters.AddRange(paras); } NpgsqlDataAdapter dataAdapter = new NpgsqlDataAdapter(); dataAdapter.SelectCommand = cmd; dataAdapter.Fill(dataTable); } return dataTable; } public static int ExecutNonQuery(string sql, params SqlParameter[] paras) { int count = 0; using (NpgsqlConnection conn = new NpgsqlConnection(myDatabaseString)) { NpgsqlCommand cmd = new NpgsqlCommand(sql, conn); cmd.Parameters.Clear(); cmd.Parameters.AddRange(paras); conn.Open(); count = cmd.ExecuteNonQuery();//执行T-SQL语句,返回受影响的行数 conn.Close(); } return count; } public static NpgsqlDataReader ExecuteReader(string sql,params SqlParameter[] paras) { NpgsqlConnection conn = new NpgsqlConnection(myDatabaseString); try { conn.Open(); NpgsqlCommand cmd = new NpgsqlCommand(sql, conn); cmd.Parameters.Clear(); cmd.Parameters.AddRange(paras); NpgsqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection); return dr; } catch(SqlException ex) { conn.Close(); throw new Exception("执行查询出现异常",ex); } } } }
07-19
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值