我一直在尝试通过我的C#代码连接到我的数据库(与我的代码位于同一台计算机上).问题是我一直得到"登录失败的用户"""错误...我承认我对连接数据库的知识很少,我已经尝试了其他问题中的几乎所有步骤!
这是我的代码的一部分:
SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["SQLServerConnection"].ConnectionString);
SqlCommand command = connection.CreateCommand();
command.CommandText = @"IF EXISTS
(
SELECT *
FROM user
WHERE EMAILADRES = @email and WACHTWOORD = @password
) SELECT CAST (1 as bit)
ELSE
SELECT CAST(0 as bit)";
command.Parameters.AddWithValue("email", email);
command.Parameters.AddWithValue("password", password);
connection.Open();
object ReturnBool = command.ExecuteScalar();
connection.Close();
Run Code Online (Sandbox Code Playgroud)
这是我的连接字符串:
<add name="SQLServerConnection" connectionString="Server=localhost; Database=database1;uid=NT AUTHORITY\NETWORK SERVICE" />
Run Code Online (Sandbox Code Playgroud) 我正在开发一个包含基于服务的数据的C#窗体应用程序.当我测试我的应用程序时,它的数据库工作正常但在程序尝试打开sqlconnection后发布和安装程序后,出现此错误:
System.Data.SqlClient.SqlException(0x80131904):尝试为文件C:\ Users\Behnam\AppData\Local\Apps\2.0\Data\5XVOVXV1.3VG\M5T04ZK7.QBJ\tahl附加自动命名的数据库. tion_45c3791d6509222d_0001.0000_be1c7cc05811ecf0\Data\AppData\TahlilGar.mdf失败.存在具有相同名称的数据库,或者无法打开指定的文件,或者它位于UNC共享上.
这是我的ConnectionString:
<add name="BA" connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\AppData\TahlilGar.mdf;
Integrated Security=True;"providerName="System.Data.SqlClient" />
Run Code Online (Sandbox Code Playgroud)
我也尝试过:User Instance= True;但结果是:
连接到SQL Server的用户实例时,不允许用户实例登录标志.连接将被关闭.
我该如何解决这个问题?
编辑:我检查了提到的路径,但没有我的.mdf文件.所以我从我的项目中复制了它,之后它工作得很好.现在为什么我的mdf文件在预期路径中发布和安装时没有复制.
c# connection-string app-config sqlconnection local-database
我想知道,这个SqlCommand构造函数重载的原因是什么:
public SqlCommand(
string cmdText,
SqlConnection connection,
SqlTransaction transaction
)
Run Code Online (Sandbox Code Playgroud)
?
当我需要创建一个使用作为参数提供的事务来完成其位的内部方法时,我总是觉得仅传递SqlTransaction给该方法就足够了,因为显然,连接将是tran.Connection.
这种过载是否同样适用?只通过cmdText而且还不够transaction吗?
实际上是否可以SqlCommand针对连接执行,提供SqlTransaction针对不同 的打开SqlConnection?这会导致什么结果?
我在一个单独的线程中查询数据库.
如果我在执行查询时关闭应用程序,SqlConnection会自动关闭还是会保持打开状态?
我SqlTransaction在c#中实现了开始,提交和回滚事务.一切都很顺利,但是在访问交易期间连接的那些表时我遇到了一些问题.在交易期间我无法读取表格(那些在交易中的表格).在搜索这个时,我发现它是由于独占锁而发生的.依次对该数据的任何后续选择都必须等待释放独占锁.然后,我已经完成了所提供的每个隔离级别SqlTransaction,但它没有用.因此,我需要在事务期间释放独占锁,以便其他用户可以访问该表并可以读取数据.有没有办法实现这个目标?提前致谢.
这是我的交易的c#代码
try
{
SqlTransaction transaction = null;
using (SqlConnection connection=new SqlConnection(Connection.ConnectionString))
{
connection.Open();
transaction=connection.BeginTransaction(IsolationLevel.Snapshot,"FaresheetTransaction");
//Here all transaction occurs
if (transaction.Connection != null)
{
transaction.Commit();
transaction.Dispose();
}
}
}
catch (Exception ex)
{
if (transaction.Connection != null)
transaction.Rollback();
transaction.Dispose();
} `
Run Code Online (Sandbox Code Playgroud)
这段代码工作正常,但问题是当我在事务处理期间访问表的数据(在事务期间访问的那些)时.这些表正由应用程序的其他部分访问.因此,当我尝试从表中读取数据时,它会抛出异常.
在我的Datasnap客户端应用程序中,我使用1个TSQLConnection作为我的方法和ProviderConnection.连接丢失时出现问题.TSQLConnection.Connected和TSQLConnection.ConnectionState都没有捕获到它.
当我的TSQL连接打开但我丢失了互联网连接,或者服务器停止.Datasnap客户端应用程序提供了大量错误.(服务器方法或ClientDatasets)
我已经创建了一个函数来管理我的服务器方法的SQL连接.但是当例如关闭通过TDSProviderConnection连接的ClientDataset时会出现更多问题.
问:如何管理客户端应用程序以安全地捕获TSQL连接上的任何断开连接. 问:如何管理停机时间,以及如何处理未保存的客户端状态.
停机后重新连接不是问题.
调用servermethod时:这会抛出异常.
tmpM:=TServerMethodsClient.Create(MYTSQLCONNECTION.dbxconnection,true);
Run Code Online (Sandbox Code Playgroud)
所以我写下一个方法,用虚方法从我的数据模块中获取TSQLCONNECTION.
function TDMForm.DSConnection: TSQLConnection;
var
tmpM:TServerMethodsClient;
begin
result:=nil;
if assigned(MYTSQLCONNECTION) then begin
tmpM:=TServerMethodsClient.Create(MYTSQLCONNECTION.dbxconnection,true);
try
try
tmpM.Ping;
result:=MYTSQLCONNECTION
except
ReconnectForm.ShowModal; // has a reconnect button that tries to reconnect + shutdownbutton
if ReconnectForm.modalresult=mrOK then
result:=MYTSQLCONNECTION
else
MainForm.Close;
end;
finally
tmpm.Free;
end;
end;
end;
Run Code Online (Sandbox Code Playgroud)
我用这种方式写了这个方法,因为只有找出连接是否丢失的方法是通过伪方法,它会抛出相同的错误...然后我可以查询重新连接或关闭程序.
编辑:(我期待某种一般的答案和指导方针,做和不做.不是我的代码的更正,这只是为了表明我现在在做什么.)
我有一个像这样的sqlConnection管理器类:
public class SQLConn {
public string connStr = System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"];
private SqlConnection sqlConn;
public SqlConnection Connection()
{
sqlConn = new SqlConnection(connStr);
return sqlConn;
}
public void Open()
{
sqlConn .Open();
}
}
Run Code Online (Sandbox Code Playgroud)
如果我使用带有'using'语句的函数,例如:
var conn = new SQLConn();
using (conn.Connection())
{
String query = "Select * from table";
objSql = new SqlCommand(query, conn.Connection());
conn.Open();
DoSomething();
}
Run Code Online (Sandbox Code Playgroud)
自conn.Connection()返回SqlConnection对象后,using语句是否自动处理连接?或者,我是否必须在SqlConn类上实现IDisposable和自定义Dispose方法?
这甚至是一个好方法吗?我正在使用遗留代码,但我还无法使用ORM,但有没有办法简化现有模式来管理/创建SQL连接?
可能重复:
如何检查连接字符串是否有效?
目前我这样做:
internal bool CheckConnection()
{
using (SqlConnection testConn = new SqlConnection(this.ConnectionString))
{
try
{
testConn.Open();
}
catch (SqlException)
{
return false;
}
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
有一个更好的方法吗?
SQL Connection和OLEDB Connection有什么区别?是OLEDB对所有人(也是SQL Server)都是通用的吗?OLEDB正在使用哪些服务器?
我有一个Log类将日志放在Windows日志和SQL表中.为了优化我的代码,我想只使用一个SqlConnection.
在MSDN中,它说:public static此类型的任何(在Visual Basic中共享)成员都是线程安全的.任何实例成员都不保证是线程安全的.
我的问题是:
private static readonly SqlConnection conn = new SqlConnection(ConfigParameters.Instance.UIDConnection);
Run Code Online (Sandbox Code Playgroud)
它是线程安全的吗?如果是的话,何时使用Open()和Close()?
如果没有,怎么使用得当SqlConnection?
这是我的完整类代码:
private static readonly SqlConnection conn = new SqlConnection(ConfigParameters.Instance.UIDConnection);
public static long WriteLog(string sSource, string sMessage, int iErrorCode, EventLogEntryType xErrorType)
{
// Windows Logs
if (ConfigParameters.Instance.WindowsLog)
EventLog.WriteEntry(sSource, sMessage, xErrorType, iErrorCode);
// SQL Logs
// TODO
return 0;
}
Run Code Online (Sandbox Code Playgroud) sqlconnection ×10
c# ×7
sql ×3
.net ×1
ado.net ×1
app-config ×1
database ×1
datasnap ×1
delphi ×1
delphi-xe2 ×1
disconnect ×1
idisposable ×1
sql-server ×1
sqlcommand ×1
transactions ×1
wcf ×1