Tag: sqldataadapter

您应该重用SqlConnection,SqlDataAdapter和SqlCommand对象吗?

我正在使用以类似于以下代码的布局编写的DAL对象。 我简化了很多代码只是为了显示设置。 public class UserDatabase : IDisposable { private SqlDataAdapter UserDbAdapter; private SqlCommand UserSelectCommand; private SqlCommand UserInsertCommand; private SqlCommand UserUpdateCommand; private SqlCommand UserDeleteCommand; private System.Data.SqlClient.SqlConnection SQLConnection; public UserDatabase() { this.SQLConnection = new System.Data.SqlClient.SqlConnection(ConnectionString); this.UserDbAdapter= new SqlDataAdapter(); this.UserDbAdapter.DeleteCommand = this.UserDeleteCommand; this.UserDbAdapter.InsertCommand = this.UserInsertCommand; this.UserDbAdapter.SelectCommand = this.UserSelectCommand; this.UserDbAdapter.UpdateCommand = this.UserUpdateCommand; } private bool FillUsers(DataSet UserDataSet, out int […]

SqlDataAdapter如何在内部工作?

我想知道SqlDataAdapter是如何在内部工作的,特别是在使用UpdateCommand来更新巨大的DataTable (因为它通常比从循环中发送sql语句快得多)。 这是我想到的一些想法: 它创建了一个准备好的sql语句(使用SqlCommand.Prepare() ),并填充了CommandText并使用正确的sql类型初始化了sql参数。 然后,它在需要更新的数据行上循环,并为每条记录更新参数值,并调用SqlCommand.ExecuteNonQuery() 。 它创建了一堆SqlCommand对象,里面填充了所有内容( CommandText和sql参数)。 然后将多个SqlCommands一次性批处理到服务器(取决于UpdateBatchSize )。 它使用一些特殊的,低级或无证的sql驱动程序指令,允许以有效的方式对多行执行更新(需要使用特殊数据格式和相同的sql查询(此处为UpdateCommand )提供要更新的行针对这些行中的每一行执行)。

在SqlCommand和SqlDataAdapter之间混淆

每个人我都是学生,不熟悉.NET,特别是MVC3开发,但对于我的一个项目,我要研究它,因此经历学习阶段我面临的问题和困惑是关于DB-Connectivity,哇哇lean lean lean关于从数据库中检索记录是这样的: //Method One: var conn = new SqlConnection(conString.ConnectionString); const string cmdString = “Select * FROM table”; var cmd = new SqlCommand(cmdString, conn); var mySqlDataAdapter = new SqlDataAdapter(cmd); mySqlDataAdapter = new SqlDataAdapter(cmd); mySqlDataAdapter.Fill(myDataSet, “design”); // making a new SqlCommand object with stringQuery and SqlConnection object THEN a new SqlDataAdapter object with SqlCommand object and […]

SqlDataReader vs SqlDataAdapter:哪一个具有更好的返回DataTable的性能?

我想知道哪一个具有更好的性能来返回DataTable 。 这里为SqlDataReader我使用DataTable.Load(dr) 使用SqlDataReader : public static DataTable populateUsingDataReader(string myQuery) { DataTable dt = new DataTable(); using (SqlConnection con = new SqlConnection(constring)) { SqlCommand cmd = new SqlCommand(myQuery, con); con.Open(); SqlDataReader dr = null; dr = cmd.ExecuteReader(CommandBehavior.CloseConnection); if (dr.HasRows) { dt.Load(dr); } return dt; } } 使用SqlDataAdapter : public DataTable populateUsingDataAdapter(string myQuery) { SqlDataAdapter dap […]

TextFile的DataTable?

我接管了另一个开发人员编写的应用程序,该应用程序从数据库中读取数据并将其导出。 开发人员使用DataTables和DataAdaptors。 所以, _dataAdapter = new SqlDataAdapter(“Select * From C….”, myConnection); 然后 ExtractedData = new DataTable(“CreditCards”); _dataAdapter.Fill(ExtractedData); 然后传递ExtractedData以执行不同的function。 我现在被告知,除此之外,我需要从一些逗号分隔的文本文件中获取相同格式的数据。 应用程序执行相同的处理 – 它只是从两个来源获取数据。 所以,我想知道我是否可以将数据读入DataTable,如上所述,然后从CSV文件中添加更多记录。 这可能吗?

数据适配器与Sql命令

哪一个在执行ms-sql数据库的insert语句时会更好: Sql DataAdapter或SQL命令对象? 哪个更好, inserting only one row并inserting multiple rows ? 代码使用的一个简单示例: SQL命令 string query = “insert into Table1(col1,col2,col3) values (@value1,@value2,@value3)”; int i; SqlCommand cmd = new SqlCommand(query, connection); // add parameters… cmd.Parameters.Add(“@value1”,SqlDbType.VarChar).Value=txtBox1.Text; cmd.Parameters.Add(“@value2”,SqlDbType.VarChar).Value=txtBox2.Text; cmd.Parameters.Add(“@value3”,SqlDbType.VarChar).Value=txtBox3.Text; cmd.con.open(); i = cmd.ExecuteNonQuery(); cmd.con.close(); SQL数据适配器 DataRow dr = dsTab.Tables[“Table1”].NewRow(); DataSet dsTab = new DataSet(“Table1”); SqlDataAdapter adp = new SqlDataAdapter(“Select […]

c#在SqlDataAdapter中使用Parameters.AddWithValue

如何将Parameters.AddWithValue与SqlDataAdapter一起使用。 下面搜索代码。 var da = new SqlDataAdapter(“SELECT * FROM annotations WHERE annotation LIKE ‘%”+txtSearch.Text+”%'”, _mssqlCon.connection); var dt = new DataTable(); da.Fill(dt); 我重写了这样的代码: SqlDataAdapter da; da = new SqlDataAdapter(“SELECT * FROM annotations WHERE annotation LIKE ‘%@search%'”, _mssqlCon.connection); da.SelectCommand.Parameters.AddWithValue(“@search”,txtSearch.Text); var dt = new DataTable(); da.Fill(dt); 但它失败了。