我是 C# 新手,或者我正在尝试以编程方式创建和打开 SQL Server 数据库。
我有一个正在创建的 ASP.NET Web 应用程序,在页面加载时它应该从数据库中提取一些数据(如果数据库不存在,则应该创建它并使用默认数据填充)。
PS:C#的吗System.Data.SqlClient
使用 MySQL 或 SQLite 还是其他?
现在我不确定我的代码是否正确创建了 SQL Server 数据库以及是否正确连接到它。
你能告诉我我的代码是否正确以及如何改进它?
UPDATE:错误是
“发生与网络相关或特定于实例的错误
建立与 SQL Server 的连接。找不到服务器或
无法访问。验证实例名称是否正确
SQL Server 配置为允许远程连接。 (提供者:命名
Pipes Provider,错误:40 - 无法打开与 SQL 的连接
服务器)”}”
我已经在下面的代码中指出了错误发生的位置。
创建 SQL Server 数据库:
// When I run this function no file seems to be created in my project directory?
// Although there is a ASPNETDB sql database file in my App_Data folder so this maybe it
public static string DEF_DB_NAME = "mydb.db"; // is this the correct extension?
private bool populateDbDefData()
{
bool res = false;
SqlConnection myConn = new SqlConnection("Server=localhost;Integrated security=SSPI;database=master");
string str = "CREATE DATABASE "+DEF_DB_NAME+" ON PRIMARY " +
"(NAME = " + DEF_DB_NAME + "_Data, " +
"FILENAME = " + DEF_DB_NAME + ".mdf', " +
"SIZE = 2MB, MAXSIZE = 10MB, FILEGROWTH = 10%) " +
"LOG ON (NAME = " + DEF_DB_NAME + "_Log, " +
"FILENAME = " + DEF_DB_NAME + "Log.ldf', " +
"SIZE = 1MB, " +
"MAXSIZE = 5MB, " +
"FILEGROWTH = 10%)";
SqlCommand myCommand = new SqlCommand(str, myConn);
try
{
myConn.Open(); // ERROR OCCURS HERE
myCommand.ExecuteNonQuery();
insertDefData(myConn);
}
catch (System.Exception ex)
{
res = false;
}
finally
{
if (myConn.State == ConnectionState.Open)
myConn.Close();
res = true;
}
return res;
}
这是我与 SQL Server 数据库的连接代码: 我很确定它无法连接 - 如果我尝试使用变量 conn,它会说连接未打开。这可能意味着我要么无法连接,要么甚至无法在第一位置创建数据库:
private bool connect()
{
bool res = false;
try
{
conn = new SqlConnection("user id=username;" +
"password=password;" +
"Server=localhost;" +
"Trusted_Connection=yes;" +
"database="+DEF_DB_NAME+"; " +
"connection timeout=30");
conn.Open();
return true;
}
catch (Exception e)
{
}
return false;
}