Tag: sqlconnection

我应该在“using”语句中使用SqlDataReader吗?

以下哪两个例子是正确的? (或哪一个更好,我应该使用) 在MSDN中我发现了这个: private static void ReadOrderData(string connectionString) { string queryString = “SELECT OrderID, CustomerID FROM dbo.Orders;” using (SqlConnection connection = new SqlConnection(connectionString)) { SqlCommand command = new SqlCommand(queryString, connection); connection.Open(); SqlDataReader reader = command.ExecuteReader(); // Call Read before accessing data. while (reader.Read()) { Console.WriteLine(String.Format(“{0}, {1}”, reader[0], reader[1])); } // Call Close when done reading. […]

C#连接数据库并列出数据库

可能重复: SQL Server查询以查找所有当前数据库名称 我试图弄清楚如何在连接到服务器之后列出数据库而不首先指定数据库。 sqlConnection1 = new SqlConnection(“Server=” + sqlServer + “;Database=” + database + “;User ID=” + userName + “;Password=” + password + “;Trusted_Connection=False;”); 基本上我想要的是最终用户连接到sql server,然后有一个下拉列表,其中填充了他们可以连接和查询的db列表。 想法?

使用SqlConnection.GetSchema仅获取表(无视图)

我用的时候 SqlConnection.GetSchema(“Tables”); 它返回目标数据库的所有表和视图。 有没有办法只返回表? 我所做的所有研究表明我正确地做了这一点,但它总是返回视图,就像它们是表格一样。 我已经在调试中挖掘了DataTable,我甚至找不到区别。 报告的数据类型相同……据我所知,它无法区分视图和表。 (它在某种程度上是有意义的,因为所有意图和目的的视图都是一个表。) 我正在使用Northwind数据库进行测试。 我正在用C#编写应用程序。 这是我运行以获取架构信息的代码。 很简单。 SQLCon.Open(); DataTable tables = SQLCon.GetSchema(“Tables”); SQLCon.Close(); 我非常想使用getschema方法而不必以另一种方式查询数据库……如果可能的话。

打开SQL连接时出现算术溢出exception

打开与底层SQL数据库的SQL连接时,我得到了非常奇怪的ArithmeticOverflowException (下面包含堆栈跟踪)。 使用哪个版本的服务器并没有什么区别(我已经validation了MS SQL 2005/2008/2012/2014),错误仍然是相同的。 安装了Windows Update的所有最新更新和修补程序。 操作系统是Windows 8.1 / 10(两个系统都相同)。 服务器在本地安装,并通过用户和密码建立连接。 连接超时validation范围为15到1000秒。 最令人惊讶的是应用程序工作正常,并与服务器正常通信,执行许多不同的查询,但突然发生此exception。 我注意到这个exception在一些Windows更新后开始出现(不知道哪一个)。 我查看了.NET代码,但不知道是什么原因导致算术溢出exception…… – 堆栈跟踪 – in SNIOpenSyncExWrapper(SNI_CLIENT_CONSUMER_INFO* , SNI_ConnWrapper** ) in SNINativeMethodWrapper.SNIOpenSyncEx(ConsumerInfo consumerInfo, String constring, IntPtr& pConn, Byte[] spnBuffer, Byte[] instanceName, Boolean fOverrideCache, Boolean fSync, Int32 timeout, Boolean fParallel) in System.Data.SqlClient.SNIHandle..ctor(ConsumerInfo myInfo, String serverName, Byte[] spnBuffer, Boolean ignoreSniOpenTimeout, Int32 timeout, Byte[]& […]

如何在web.config文件中编写连接字符串并从中读取?

我正在尝试将连接字符串写入Web.config,如下所示: 并从中读取如下: string strcon = ConfigurationManager.ConnectionStrings[“Dbconnection”].ConnectionString; SqlConnection DbConnection = new SqlConnection(strcon); 当运行程序时,由于空引用,我得到一个错误。 但是当我使用这段代码时: SqlConnection DbConnection = new SqlConnection(); DbConnection.ConnectionString = “Server=localhost; Database=OnlineShopping ; Integrated Security=True”; 我没有收到任何错误,程序正常工作! 问题是什么?

抛出exception时,确保SQL连接关闭的正确方法是什么?

我经常使用看起来像这样的模式。 我想知道这是否正常,或者是否有最佳实践我不在这里申请。 我特别想知道; 在抛出exception的情况下,我在finally块中的代码足以确保连接被正确关闭? public class SomeDataClass : IDisposable { private SqlConnection _conn; //constructors and methods private DoSomethingWithTheSqlConnection() { //some code excluded for brevity try { using (SqlCommand cmd = new SqlCommand(SqlQuery.CountSomething, _SqlConnection)) { _SqlConnection.Open(); countOfSomething = Convert.ToInt32(cmd.ExecuteScalar()); } } finally { //is this the best way? if (_SqlConnection.State == ConnectionState.Closed) _SqlConnection.Close(); } //some code […]

C#SQLConnection池

任何人都可以向我简要介绍如何在ADO.Net中进行连接池,我需要连接到3个独立的数据库。 其中2个在同一服务器中,另一个在另一个服务器中。 更好的代码片段..

是否最好将打开的SqlConnection作为参数传递,或者在每个方法中调用一个新的?

如果我要调用的方法/函数需要一个开放的SqlConnection,我将在调用该函数的方法中打开它。 例如: protected static void btnSubmit(){ conn.Open(); myMethod(someParam, conn); conn.Close(); } protected static void myMethod(object someParam, SqlConnection conn){ //Some SQL commands etc here.. } 我这样做,所以我: 每个进程只能打开和关闭1个SqlConnection 但是,如此构造我的代码会更好: protected static void btnSubmit(){ myMethod(someParam); } protected static void myMethod(object someParam){ SqlConnection conn = New SqlConnection(“…..”); conn.Open(); //Some SQL commands etc here.. conn.Close(); } 我看到以这种方式构造它的优点是: 我不必为每个方法传递额外的参数 如果稍后该方法不再具有SQL命令,则每次都不会调用未使用的参数 我看到的缺点是: […]

带有using语句的SqlCommand

我看到在大多数样本中,SqlCommand都是这样使用的 using (SqlConnection con = new SqlConnection(CNN_STRING)) { using (SqlCommand cmd = new SqlCommand(“Select ID,Name From Person”, con)) { SqlDataAdapter da = new SqlDataAdapter(cmd); DataSet ds = new DataSet(); da.Fill(ds); return ds; } } 我知道为什么我们使用“使用”声明。 但是SqlCommand没有包含Close()方法,所以我们应该在using语句中使用它

ASP.NET使用SqlConnection连接MySQL

这是web.config保存的连接字符串: 这是连接数据库的代码: protected bool CheckPasswordBySqlServer(string strEmail, string strPsw) { if (strEmail.ToLower() == “admin”) { return false; } string str = “select id,Rank,RankEnc,ParentUser,Company from tbl_User where userName=@UserName and password1=@password”; private string strConn = ConfigurationManager.AppSettings[“conn”].ToString(); SqlConnection sqlConnection = new SqlConnection(strConn); bool flag = false; try { try { sqlConnection.Open(); SqlCommand sqlCommand = new SqlCommand(str, sqlConnection); sqlCommand.Parameters.AddWithValue(“UserName”, strEmail); […]