创建和连接 SQL Server 数据库的代码:有什么问题吗?

2024-02-19

我是 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;
    }

您可能已经弄清楚了这一点,但以防万一人们最终遇到同样的问题(就像我一样),这就是我如何实现这一点的。

您的错误是 SqlConnection 未打开,因为它找不到合适的服务器。如果您使用的是 SQL Server Express 版本(就像我一样),您应该像这样设置 SqlConnection 对象:

SqlConnection myConn = new SqlConnection("Server=localhost\\SQLEXPRESS;Integrated security=SSPI;database=master;");

不过,一旦解决了该错误,当您尝试执行查询时,下一行就会失败。 “文件名”需要用单引号分隔,但扩展名后面只有一个;您之前还需要一个。

另外,这是完整的物理文件路径,它不会使用当前目录上下文,您必须指定一个路径。确保该位置是数据库服务器在运行时可以访问的位置,否则您将抛出 SqlException 并显示以下错误消息:

文件“...\filename.mdf”的目录查找失败,出现操作系统错误 5(访问被拒绝)。创建数据库失败。无法创建列出的某些文件名。

我最终使用的代码如下所示:

public static string DB_NAME = "mydb"; //you don't need an extension here, this is the db name not a filename
public static string DB_PATH = "C:\\data\\";

public bool CreateDatabase()
{
    bool stat=true;
    string sqlCreateDBQuery;
    SqlConnection myConn = new SqlConnection("Server=localhost\\SQLEXPRESS;Integrated security=SSPI;database=master;");

    sqlCreateDBQuery = " CREATE DATABASE "
                        + DB_NAME
                        + " ON PRIMARY "
                        + " (NAME = " + DB_NAME + "_Data, "
                        + " FILENAME = '" + DB_PATH + DB_NAME + ".mdf', "
                        + " SIZE = 2MB,"
                        + " FILEGROWTH = 10%) "
                        + " LOG ON (NAME =" + DB_NAME + "_Log, "
                        + " FILENAME = '" + DB_PATH + DB_NAME + "Log.ldf', "
                        + " SIZE = 1MB, "
                        + " FILEGROWTH = 10%) ";

    SqlCommand myCommand = new SqlCommand(sqlCreateDBQuery, myConn);
    try
    {
        myConn.Open();
        myCommand.ExecuteNonQuery();
    }
    catch (System.Exception)
    {
        stat=false;
    }
    finally
    {
        if (myConn.State == ConnectionState.Open)
        {
            myConn.Close();
        }
        myConn.Dispose();
    }
    return stat;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

创建和连接 SQL Server 数据库的代码:有什么问题吗? 的相关文章

  • 是否可以通过引用以基类作为参数的函数来传递派生类

    假设我们有一个抽象基类IBase使用纯虚方法 接口 然后我们推导出CFoo CFoo2来自基类 我们有一个知道如何使用 IBase 的函数 Foo IBase input 这些情况下通常的场景是这样的 IBase ptr static ca
  • 仅从数据库获取我想要的数据但保留结构

    我正在尝试在 powerbi 上执行此操作 但我想这只是基本的 SQL 我想将我的数据导入到 powerBi 中 但使用一些 id 对其进行过滤 我们以这个例子为例 我与一些公司有数据库 表1 每个公司都有建筑物 表2 每个建筑物有员工 表
  • 不能使用函数名称距离

    以下代码可以正常编译 include
  • 如何自定义 ASP.Net Core 模型绑定错误?

    我只想从我的 Web API Asp net Core 2 1 返回标准化的错误响应 但我似乎不知道如何处理模型绑定错误 该项目刚刚从 ASP NET Core Web 应用程序 gt API 模板创建 我有一个简单的操作定义为 Route
  • ASP.NET Core 中 AsNoTracking 的模拟或更好的解决方法

    您如何模拟 AsNoTracking 或者是否有更好的解决方法来解决此问题 Example public class MyContext MyContextBase Constructor public MyContext DbContex
  • Server.Transfer 从 ASP 到 ASP.Net

    这是我的场景 桌面应用程序使用 XML 数据发布到我的 Web 应用程序中的特定 ASP 页面 Web 应用程序正在被重写为 ASP Net 但是 该特定页面的 URL 无法更改 由于桌面应用程序 我最初的想法是简单地将请求从经典 ASP
  • 使用 pthread_cond_signal 优雅地终止线程被证明是有问题的

    我需要发射一堆线程 并希望优雅地将它们拉下来 我正在尝试使用pthread cond signal pthread cond wait实现这一目标 但遇到了问题 这是我的代码 首先是thread main static void thrma
  • 我可以将特定警告视为错误吗?

    以下是我有时在学生代码中看到的模式的简化版本 bool foobar int a int b if a lt b return true 当然 真正的代码要复杂得多 Visual Studio 报告警告 C4715 并非所有控制路径都会返回
  • 删除原始数据中部分重复的记录

    我需要删除表中时间间隔为 1 或 2 分钟或相同且必须相同的所有记录ID但保留第一个记录 ID Time SN SD WE FW 10 2014 06 30 19 17 37 000 I 0 100 0 10 2014 06 30 19 1
  • Math.Sin、Math.Cos 和 Math.Tan 精度以及正确显示它们的方法

    我正在用 C 编写一个计算器 textBoxResult是一个文本框 我在其中显示数字 recount是以度为单位获取角度并以弧度为单位返回的函数 我的角度是从texBoxInput public double recount int nu
  • 为什么Windsor只能拦截虚方法或接口方法?

    我正在阅读文档 发现如果不使用接口 那么 Windsor 只能拦截虚拟方法 这是 Windsor 的限制还是 C 语言的限制 我正在寻找深入的答案 C 语言在这里完全无关 问题是拦截在运行时级别如何工作 一种技术是从类继承 实现接口并将其用
  • 当 C 中没有足够的内存用于静态分配时会发生什么?

    当您动态分配内存时 例如malloc 1024 sizeof char 结果指针设置为NULL如果没有足够的可用内存来满足请求 当没有足够的内存来满足静态分配时会发生什么 例如char c 1024 char c 1024 不一定是静态分配
  • 验证域用户凭据

    我需要一种方法来验证 Windows 上本机 C 的用户 密码对 输入的是用户名和密码 用户可以是 DOMAIN user 格式 基本上我需要编写一个函数 如果用户 密码是有效的本地帐户 则返回 true 第1部分 如果用户 密码在给定的域
  • C# 或 Windows 相当于 OS X 的 Core Data?

    我迟到了 现在才开始在 OS X Cocoa 中使用 Core Data 它令人难以置信 并且确实改变了我看待事物的方式 C 或现代 Windows 框架中是否有等效的技术 即拥有可免费保存 数据管理 删除 搜索的托管数据类型 还想知道Li
  • 使用 Node.js 访问用 C++ 编写的 SDK

    我有一个用 C 语言编写的 SDK 可以与我的扫描仪设备进行通信 我需要开发一个可以访问扫描仪设备的电子应用程序 我知道有很多库可用于扫描仪 但我想使用这个 SDK 因为它允许我访问设备的完整功能 而且它是由设备制造商提供的 那么 有没有什
  • 来自资源中 ImageSource 的 System.Drawing.Image

    我的问题与这个非常相似 wpf图像资源以及运行时在wpf控件中更改图像 https stackoverflow com questions 940592 wpf image resources and changing image in w
  • C++ 项目编译为静态库,编译为动态库失败(链接器错误)。为什么?

    我有一个 VS2008 本机 C 项目 我希望将其编译为 DLL 它仅引用一个外部库 log4cplus lib 并使用其功能 当然也使用 log4cplus 的 h 文件 当我尝试将我的项目编译为静态库时 它成功了 当我尝试作为 DLL
  • WPF DataGrid 选定项

    我有一个 DataGrid 用户可以通过在最后一行输入数据来添加项目 我还有一个按钮可以删除当前选定的项目 但是 当选择最后一行 空 用于添加新项目 时 最后选定的项目将保留在 SelectedItem 中 因此 如果我打开窗口 选择最后一
  • 如何找到在SQL Server中注册的程序集?

    我在 SQL Server 中注册了一个程序集 CREATE ASSEMBLY CLRFunctions AUTHORIZATION dbo FROM 0x4D5A90000300000 WITH PERMISSION SET SAFE 我
  • ASP.NET API:尚未为此 DbContext 配置数据库提供程序

    我正在尝试从我的 Net Core API 项目连接到 MySql 数据库 这是我的上下文类 public class MyContext DbContext public MyContext public MyContext DbCont

随机推荐

  • 如何在 Azure 中启用 PUT 请求?

    我正在 Azure 上构建 REST API 但是当我尝试通过 PUT 方法访问端点时 我得到了HTTP 405 Method Not Allowed 状态以及 IIS 错误消息 由于无效 您要查找的页面无法显示 正在使用方法 HTTP 动
  • 促使 TestFlight/iTunes Connect 发布新的测试版

    我正在使用 iTunes Connect 中的新测试版功能 我将一个版本 98 上传到 iTunes Connect 设置了一些内部测试人员 然后他们下载了该版本 现在 我已经使用新版本 build 99 更新了构建 并且该版本已上传到 i
  • logcat 停止写入设备上的文件

    对于 Android 应用程序 我将日志保存在设备本身上 以便在出现问题时我们可以找出问题所在 该设备在无互联网环境中运行 因此无法远程写入日志 下面的代码首先清除缓冲区 然后连续将记录的内容写入 logFile try Process p
  • 如何减小超过 600 MB 的 Electron 封装大小

    我发现这是因为节点模块和应用程序打包了一些不需要的东西来运行 当前文件大小为 600 mb 但我希望它小于 200 mb 我怀疑 no prune 填充了构建的包中的所有节点模块 但我只需要指定构建的包中的节点模块 我尝试删除 packag
  • 可绘制的 getResources().getIdentifier 问题

    这是我第一次来这里 我发现这个网站非常有用 我是 android 新手 我需要找出为什么我无法在列表视图中动态加载图像 我有三个字符串数组 private String lv arr News Events Other private St
  • cs107 makefile::找不到-lrssnews

    我想开始从事在线斯坦福 CS107 编程范式课程的第四个作业 即 RSS 搜索器 然而 我在第一步就落后了 我无法编译准备好的 待处理的 未完成的程序 当我输入 make 时出现此错误 gcc rss news search o g Wal
  • 在生产和版本控制同步问题中运行 Strapi

    我想知道在生产中运行 Strapi 的最佳实践是什么 我注意到 当添加内容类型时 Strapi 会生成新文件 这意味着生产环境的文件将与版本控制不同步 有推荐的部署流程吗 在管理中进行更改后 我是否应该将生产中的更改提交到我的 git 存储
  • UICollectionViewCell systemLayoutSizeFittingSize 返回不正确的宽度

    我一直在玩弄动态 UICollectionViewCell 并注意到在 iOS 8 上调用cell contentView systemLayoutSizeFittingSize UILayoutFittingCompressedSize
  • 在某些版本的 Oracle 中,相关子查询是否有嵌套限制?

    这是可以帮助您理解我的问题的代码 create table con content id number create table mat material id number content id number resolution num
  • C# 自动启动自动将应用程序添加到启动文件夹

    C 自动启动是否有可能自动将应用程序添加到启动文件夹 现在我可以下载并安装具有自动启动功能的 C 应用程序 但当我重新启动 Windows 时 应用程序不会自动评级 怎么做 你可以使用它 RegistryKey rkey Registry
  • Android:将图像存储到项目目录(文件)中?

    我想将我的位图图像存储到项目目录中 我如何访问我的项目文件夹或者我的项目文件夹的地址是什么 您必须将图像放入res drawable文件夹 然后 您可以使用以下方式访问它们 R drawable name of image for name
  • 在样式组件 ReactJS 上导入 font-face

    I use styled component用于我的 ReactJS 应用程序上的库 css 我想要 font face但不工作 code on GlobalStyle js import createGlobalStyle from st
  • WPF Datagrid - 强制单行行

    我正在 WPF 中处理数据网格 但遇到了问题 将多行字符串添加到我的 DataGridTextColumn 时 该行的高度会扩展以适合整个文本 我希望行高始终保持不变 即仅显示第一行 有谁知道解决方案吗 似乎是一个足够简单的任务 但我还没有
  • 来自数组 HTML Javascript 的图像

    这是一个基本问题 但我发现的大多数例子都有点过于复杂 我正在尝试创建一组照片 然后仅显示选定的一张 这是我的数组 var imgArray new Array imgArray 0 new Image imgArray 0 src imag
  • 使用 Python 自动填写 Web 浏览器表单

    问题 你好 我是一名初学者 正在尝试学习 Python 这是我的第一个项目我想编写一个脚本来自动填写调查问卷 我熟悉编码 并且我编写的大部分代码都是为了解决这个问题 我正在努力编写一个方法 该方法将点击问题 1中的按钮 1 或者按下任何给定
  • 我的 Android 应用程序中由 Theme.AppCompat 引起的 IllegalStateException

    当我尝试启动该应用程序时 出现 NPE 我不知道是什么原因造成的 该应用程序应在网站上显示地图 然后用户可以轻松地将他的位置输入到编辑文本中并将其提交到网页 这是我的代码 package com timbremer iimv import
  • 如何使用jquery在标题属性中添加换行符

    请在下面找到我的代码 该代码将鼠标悬停事件的工具提示添加到我的调查引擎中的字段中 我想要实现的是在工具提示中添加换行符 任何帮助是极大的赞赏 var j jQuery noConflict j choice31QID405 mouseove
  • 标准机器学习中的部分总和?

    我是函数式编程的新手 我有一项任务来计算列表的部分和 例如 psum 1 1 1 1 1 val it 1 2 3 4 5 整数列表 这是到目前为止我的代码 然而 在函数 psum2 L 中 我不知道如何遍历每个值并将它们相加 所以我只是打
  • C++:检查括号和方括号在字符串中是否平衡(逻辑问题)[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 检查字符串中的每个 是否都满足 或 检查字符串中的每个 是否与 或 匹配 例如 您永远不能拥有像这样的字符串 a a a a a 但是
  • 创建和连接 SQL Server 数据库的代码:有什么问题吗?

    我是 C 新手 或者我正在尝试以编程方式创建和打开 SQL Server 数据库 我有一个正在创建的 ASP NET Web 应用程序 在页面加载时它应该从数据库中提取一些数据 如果数据库不存在 则应该创建它并使用默认数据填充 PS C 的