我已经建立了一个asp.net网站usinbg visual studio。所有文件都在我桌面上的文件夹中,包括.mdf数据库文件。但是当我在另一台计算机上通过visual studio打开文件夹时,当我尝试运行网站时,我告诉我它无法找到.mdf文件,我知道这将是我的连接字符串/连接classk的问题,但我尝试过使用连接类和连接字符串,但它仍然不会加载数据库。
这是我的网络配置文件:
<?xml version="1.0"?>
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.5.2">
<assemblies>
<add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
</assemblies>
</compilation>
<httpRuntime targetFramework="4.5.2"/>
</system.web>
<connectionStrings>
<add name="nas_connect" connectionString="Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\nas.mdf;Integrated Security=True"
providerName="System.Data.SqlClient" />
<add name="nasConnectionString" connectionString="Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename="C:\Users\joshy\Documents\Visual Studio 2015\WebSites\nas2\App_code\nas.mdf";Integrated Security=True;Connect Timeout=30"
providerName="System.Data.SqlClient" />
<add name="nasConnectionString2" connectionString="Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename="C:\Users\joshy\Documents\Visual Studio 2015\WebSites\nas2\App_code\nas.mdf";Integrated Security=True;Connect Timeout=30"
providerName="System.Data.SqlClient" />
<add name="nasConnectionString3" connectionString="Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename="C:\Users\joshy\Documents\Visual Studio 2015\WebSites\nas2\App_code\nas.mdf";Integrated Security=True;Connect Timeout=30"
providerName="System.Data.SqlClient" />
<add name="nasConnectionString4" connectionString="Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename="C:\Users\joshy\Documents\Visual Studio 2015\WebSites\nas2\App_code\nas.mdf";Integrated Security=True;Connect Timeout=30"
providerName="System.Data.SqlClient" />
<add name="insert into" connectionString="Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename="C:\Users\joshy\Documents\Visual Studio 2015\WebSites\nas2\App_code\nas.mdf";Integrated Security=True;Connect Timeout=30"
providerName="System.Data.SqlClient" />
</connectionStrings>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="DotNetOpenAuth.Core" publicKeyToken="2780ccd10d57b246"/>
<bindingRedirect oldVersion="1.0.0.0-4.1.0.0" newVersion="4.1.0.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="DotNetOpenAuth.AspNet" publicKeyToken="2780ccd10d57b246"/>
<bindingRedirect oldVersion="1.0.0.0-4.1.0.0" newVersion="4.1.0.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Optimization" publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="1.1.0.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect oldVersion="1.0.0.0-1.5.2.14234.0.0" newVersion="1.5.2.14234.0.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SqlServerCe.4.0"/>
<add name="Microsoft SQL Server Compact Data Provider 4.0" invariant="System.Data.SqlServerCe.4.0" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/>
</DbProviderFactories>
</system.data>
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701"/>
<compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\"Web\" /optionInfer+"/>
</compilers>
</system.codedom>
<appSettings>
<add key="ValidationSettings:UnobtrusiveValidationMode" value="None" />
</appSettings>
</configuration>
这是我的connectionclass.cs文件:
using System.Collections;
using System.Configuration;
using System.Data.SqlClient;
using Entities;
public static class ConnectionClass
{
private static SqlConnection conn;
private static SqlCommand command;
private static object toursdate;
static ConnectionClass()
{
string connectionString = ConfigurationManager.ConnectionStrings["nas_connect"].ToString();
conn = new SqlConnection(connectionString);
command = new SqlCommand("", conn);
}
#region tours
public static tours GettoursByID(int id)
{
string query = string.Format("SELECT * FROM tours WHERE id = '{0}'", id);
tours tours = null;
try
{
conn.Open();
command.CommandText = query;
SqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
string name = reader.GetString(1);
string date = reader.GetString(2);
double price = reader.GetDouble(3);
string venue = reader.GetString(4);
string country = reader.GetString(5);
string image = reader.GetString(6);
string description = reader.GetString(7);
tours = new tours(id, name, date, price, venue, country, image, description);
}
}
finally
{
conn.Close();
}
return tours;
}
public static ArrayList GettoursBydate(string tourdate)
{
ArrayList list = new ArrayList();
string query = string.Format("SELECT * FROM tours WHERE date LIKE '{0}'", toursdate);
try
{
conn.Open();
command.CommandText = query;
SqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
int id = reader.GetInt32(0);
string name = reader.GetString(1);
string date = reader.GetString(2);
double price = reader.GetDouble(3);
string venue = reader.GetString(4);
string country = reader.GetString(5);
string image = reader.GetString(6);
string description = reader.GetString(7);
tours tours = new tours(id, name, date, price, venue, country, description, image);
list.Add(tours);
}
}
finally
{
conn.Close();
}
return list;
}
public static void Addtours(tours tours)
{
string query = string.Format(
@"INSERT INTO tours VALUES ('{0}', '{1}', @prices, '{2}', '{3}','{4}', '{5}')",
tours.Name, tours.date, tours.venue, tours.Country, tours.Image, tours.description);
command.CommandText = query;
command.Parameters.Add(new SqlParameter("@prices", tours.Price));
try
{
conn.Open();
command.ExecuteNonQuery();
}
finally
{
conn.Close();
command.Parameters.Clear();
}
}
#endregion
#region Users
public static User LoginUser(string name, string password)
{
//Check if user exists
string query = string.Format("SELECT COUNT(*) FROM nas.dbo.users WHERE name = '{0}'", name);
command.CommandText = query;
try
{
conn.Open();
int amountOfUsers = (int)command.ExecuteScalar();
if (amountOfUsers == 1)
{
//User exists, check if the passwords match
query = string.Format("SELECT password FROM users WHERE name = '{0}'", name);
command.CommandText = query;
string dbPassword = command.ExecuteScalar().ToString();
if (dbPassword == password)
{
//Passwords match. Login and password data are known to us.
//Retrieve further user data from the database
query = string.Format("SELECT email, user_type FROM users WHERE name = '{0}'", name);
command.CommandText = query;
SqlDataReader reader = command.ExecuteReader();
User user = null;
while (reader.Read())
{
string email = reader.GetString(0);
string type = reader.GetString(1);
user = new User(name, password, email, type);
}
return user;
}
else
{
//Passwords do not match
return null;
}
}
else
{
//User does not exist
return null;
}
}
finally
{
conn.Close();
}
}
public static string RegisterUser(User user)
{
//Check if user exists
string query = string.Format("SELECT COUNT(*) FROM users WHERE name = '{0}'", user.Name);
command.CommandText = query;
try
{
conn.Open();
int amountOfUsers = (int)command.ExecuteScalar();
if (amountOfUsers < 1)
{
//User does not exist, create a new user
query = string.Format("INSERT INTO users VALUES ('{0}', '{1}', '{2}', '{3}')", user.Name, user.Password,
user.Email, user.Type);
command.CommandText = query;
command.ExecuteNonQuery();
return "User registered!";
}
else
{
//User exists
return "A user with this name already exists";
}
}
finally
{
conn.Close();
}
}
#endregion
}
.mdf数据库文件位于项目文件夹的app_code文件夹中。
任何帮助将不胜感激, 谢谢。
答案 0 :(得分:0)
请务必将.mdf文件分发到App_Code
文件夹而不是|DataDirectory|
。默认情况下,连接字符串上的App_Data
映射到{{1}}。
答案 1 :(得分:0)
尝试将此用作ur连接字符串: -
<connectionStrings>
<add name="nas_connect"
connectionString="Data Source=.\MSSQLLocalDB;AttachDbFilename=|DataDirectory|app_code\nas.mdf;Integrated Security=True;User Instance=True"
providerName="System.Data.SqlClient" />
</connectionStrings>