你好,我是C#winform的初学者, 我必须通过登录表单(文本框:名称 - 密码)将多个用户(400个不同的用户)连接到使用Winform C#的单个sql数据库,所有用户都是在数据库中创建的sql用户,并具有用户或管理员等角色。 我一直在寻找一种简单的方法来实现这个实体框架,但无法找到任何人......任何人都知道如何做到这一点? 谢谢你的帮助。
答案 0 :(得分:1)
每个用户是否都需要自己登录数据库?
如果这是真的,你需要编写一个特殊的连接字符串,如下所示:
using System.Data.SqlClient;
SqlConnection conn = new SqlConnection();
conn.ConnectionString =
"Data Source=ServerName;" +
"Initial Catalog=DataBaseName;" +
"User id=" + UserName + ";"
"Password=" + Password + ";";
conn.Open();
将它放在一个接受用户名和密码的类中。
完整示例:
class myConnection
{
public static SqlConnection GetConnection(string UserName, string Password)
{
string str = "Data Source=ServerName;Initial Catalog=DataBaseName;User id=" + UserName + ";Password=" + Password + ";";
SQlConnection con = new SqlConnection(str);
con.Open();
return con;
}
}
答案 1 :(得分:0)
用户凭据在连接字符串中指定,因此您需要使用登录表单中用户提供的数据构建连接字符串。
var sqlBuilder = new SqlConnectionStringBuilder();
// Set the properties for the data source.
sqlBuilder.DataSource = "ServerName";
sqlBuilder.InitialCatalog = "DatabaseName";
sqlBuilder.UserID = "USERNAME";
sqlBuilder.Password = "PASSWORD";
sqlBuilder.IntegratedSecurity = true;
// Build the SqlConnection connection string.
string providerString = sqlBuilder.ToString();
// Initialize the EntityConnectionStringBuilder.
var entityBuilder = new EntityConnectionStringBuilder();
//Set the provider name.
entityBuilder.Provider = "System.Data.SqlClient";
// Set the provider-specific connection string.
entityBuilder.ProviderConnectionString = providerString;
然后使用此连接字符串初始化DbContext
var context = new DbContext(entityBuilder.ConnectionString);