C#:表未在SQL Server中创建
我是SQL Server中的新手,当前正试图创建一个包含表内的数据库。这是数据库创建的代码。C#:表未在SQL Server中创建
if not exists(select * from sys.databases where name = 'TCPDUMP')
CREATE DATABASE TCPDUMP
ON PRIMARY (NAME = TCPDUMP,
FILENAME = 'P:\Visual Studio 2015\Projects\Serene5\Serene5\Serene5.Web\App_Data\TCPDUMP.mdf',
SIZE = 2MB, MAXSIZE = 10GB, FILEGROWTH = 10%)
LOG ON (NAME = TCPDUMP_Log,
FILENAME = 'P:\Visual Studio 2015\Projects\Serene5\Serene5\Serene5.Web\App_Data\TCPDUMP.ldf',
SIZE = 1MB, MAXSIZE = 5GB, FILEGROWTH = 10%)
并且表的代码。
if not exists(select * from sys.tables where name = sample2Prot)
CREATE TABLE [TCPDUMP].[dbo].[sample2Prot]
(
[IdTransmission] INT IDENTITY(1, 1) NOT NULL,
[timestp] NVARCHAR(32) NULL,
[idq] NVARCHAR(32) NULL,
[idz] NVARCHAR(32) NULL,
[prot] NVARCHAR(32) NULL,
[Lhowmany] NVARCHAR(32) NULL,
[Rhowmany] NVARCHAR(32) NULL,
CONSTRAINT[PK_TCPDump]
PRIMARY KEY CLUSTERED([IdTransmission] ASC)
)
然而,当我做
SELECT * FROM [TCPDUMP].[dbo].[sample2Prot]
出现错误:
System.Data.SqlClient.SqlException:无效的对象名称sample2Prot“
我假设我在我的SQL代码中犯了一个错误,但我无法弄清楚在哪里以及为什么。有没有人有想法?
编辑:我适应我的代码,您的意见(倒置[sample2Prot].[dbo].[TCPDUMP]
,修正后的括号内。),但它仍然无法正常工作
从快查看,似乎数据库&表的顺序颠倒了:
CREATE TABLE [sample2Prot].[TCPDUMP]
正确的命名以创建一个表是[数据库名] [模式名称],如下所示。[表名](dbo
是SQL Server使用默认数据库对象模式):
IF NOT EXISTS (SELECT * from sys.tables where name = sample2Prot)
CREATE TABLE [TCPDUMP].[dbo].[sample2Prot]
(
[IdTransmission] INT IDENTITY(1, 1) NOT NULL,
[timestp] NVARCHAR(32) NULL,
[idq] NVARCHAR(32) NULL,
[idz] NVARCHAR(32) NULL,
[prot] NVARCHAR(32) NULL,
[Lhowmany] NVARCHAR(32) NULL,
[Rhowmany] NVARCHAR(32) NULL,
CONSTRAINT [PK_TCPDump]
PRIMARY KEY CLUSTERED ([IdTransmission] ASC)
)
或者用USE [database_name]
简单得多:
USE [TCPDUMP]
-- CREATE TABLE sample2Prot may used directly if dbo schema used
CREATE TABLE [dbo].[sample2Prot]
(
-- column & constraint declarations
)
SELECT语句可以配置如下:
USE [TCPDUMP]
SELECT * FROM sample2Prot
-- or
SELECT * FROM [TCPDUMP].[dbo].[sample2Prot]
您应该检查你的语法在CREATE TABLE命令。它应该是这样的:
if not exists(select * from sys.tables where name = sample2Prot)
CREATE TABLE [TCPDUMP].[dbo].[sample2Prot]
签出更多的语法在这里,如果你使用一个数据库,玛 MSDN
那么你可能需要改变你的SELECT
声明:
SELECT * FROM [TCPDUMP].[dbo].[sample2Prot]
您缺少架构,可以添加它或使用[TCPDUMP] .. [sample2Prot]使用默认值。 – Leonidas199x
shema是一个可选值,如您在MSDN上看到的 –
您是否尝试过运行代码?它会认为TCPDUMP是模式。 – Leonidas199x
哪个字符串实际上包含字符串参数'{0}'?这里第二个参数“sample2Prot”的用途是什么? –
您正在创建一个语法为CREATE TABLE [sample2Prot]的表。[TCPDUMP]语法应该是[Database]。[schema]。[tablename]。我会直接在SQL Server中检查你的语法,然后将它插入到C#中 – Leonidas199x
它看起来像在你的查询中缺少括号。 –