GVKun编程网logo

检查SQL Server数据库表中是否存在表或列(sql server查看表是否存在)

10

以上就是给各位分享检查SQLServer数据库表中是否存在表或列,其中也会对sqlserver查看表是否存在进行解释,同时本文还将给你拓展android检查sqlite数据库中是否存在某个元素、ASP

以上就是给各位分享检查SQL Server数据库表中是否存在表或列,其中也会对sql server查看表是否存在进行解释,同时本文还将给你拓展android检查sqlite数据库中是否存在某个元素、ASP.NET C#在SQL Server数据库表中搜索、EF Core中,通过实体类向SQL Server数据库表中插入数据后,实体对象是如何得到数据库表中的默认值的、MySQL(社区)数据库表中是否存在最大行数?等相关知识,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

检查SQL Server数据库表中是否存在表或列(sql server查看表是否存在)

检查SQL Server数据库表中是否存在表或列(sql server查看表是否存在)

在SQL Server数据库中创建列或表之前,我想检查所需的表和/或列是否存在。

我到处搜索并找到2种方法。

  1. 存储过程,我不想使用
  2. 通过使用该SqlCommand.ExecuteScalar()方法并捕获异常来确定表/列是否存在,这对我来说是一个变通方法,但不是一个完美的解决方案。

还有另一种方法可以检查SQL Server中是否存在表/列吗?

答案1

小编典典

要在创建架构之前检查其是否存在,请执行以下操作:

检查是否存在一列;您可以使用IF NOTEXISTS,然后将实际查询放入其中。

IF NOT EXISTS(SELECT * FROM sys.columns         WHERE [name] = N''columnName'' AND [object_id] = OBJECT_ID(N''tableName''))BEGIN    ALTER TABLE ADD COLUMN MYCOLUMNEND

对于表,查询有点类似:

IF (NOT EXISTS (SELECT *                  FROM INFORMATION_SCHEMA.TABLES                  WHERE TABLE_SCHEMA = ''TheSchema''                  AND  TABLE_NAME = ''TheTable''))BEGIN    CREATE TABLE MYTABLEEND

android检查sqlite数据库中是否存在某个元素

android检查sqlite数据库中是否存在某个元素

private boolean search_city(String str) {
  • CityDBHelper dbHelper = new CityDBHelper(MainActivity.this,
  • "city_db_2", null, 1);
  • SQLiteDatabase db = dbHelper.getWritableDatabase();
  • Cursor cursor = db.rawQuery(
  • "select * from city_table where city=? ",
  • new String[] { str });
  • while (cursor.moveToNext()) {
  • db.close();
  • Log.i(" search_city_name_exist", str + "在数据库已存在,return true");
  • return true;// //有城市在数据库已存在,返回true
  • }
  • db.close();
  • Log.i(" search_city_name_exist", str + "在数据库不存在,return false");
  • return false;// //在数据库以前存在 false
  • }
  • 经测试,是正确可靠的
    <img src="https://img-blog.csdn.net/20151203000731879" alt="" />
    

    ASP.NET C#在SQL Server数据库表中搜索

    ASP.NET C#在SQL Server数据库表中搜索

    我正在构建一个门户网站,它不是一个博客引擎,但与一个非常类似.在sql Server中,我有一个包含表的数据库,该表是“posts”的基础.此帖子表包括以下列:

    > ID
    >作者
    >标签
    >标题
    > Markdown发布内容

    这是我第一次构建这样的门户网站,我想在这些行上实现某种ASP.NET搜索,最好使用除ID之外的所有属性(列).此外,从长远来看,我正在考虑是否有可能对这些帖子进行搜索和评论,这些帖子将存储在不同的表格中.

    是否有任何开源实现或在线示例代码来完成此搜索?如果没有,我该如何开始?您是否可以指向一些有关如何使用ASP.NET和C#完成此操作的示例代码的教程?此外,Google(或其他公司)是否为此创建了任何内容?

    我希望我的问题不是太广泛或含糊不清.提前致谢!

    解决方法

    你在使用sql Server 2008吗?如果是这样,您可以利用内置的 full-text search features.然后就像将用户的(已清理的)输入传递给SQL查询一样简单.

    例如,这是一个查询,它将在Author,Title和PostContent字段中搜索用户输入的文本.

    SELECT Author,Title FROM Posts
    WHERE CONTAINS((Author,Title,PostContent),@userInput);

    sql Server 2008支持different search methods too,如简单令牌,加权字值,同义词,邻近和前缀搜索……它非常棒.

    EF Core中,通过实体类向SQL Server数据库表中插入数据后,实体对象是如何得到数据库表中的默认值的

    EF Core中,通过实体类向SQL Server数据库表中插入数据后,实体对象是如何得到数据库表中的默认值的

    我们使用EF Core的实体类向SQL Server数据库表中插入数据后,如果数据库表中有自增列或默认值列,那么EF Core的实体对象也会返回插入到数据库表中的默认值。

     

    下面我们通过例子来展示,EF Core是怎么获取数据库的默认值的。首先我们建立一个.NET Core控制台项目,然后引入EF Core所需的NuGet包。

     

     

    获取自增列值


     

    我们在SQL Server数据库中建立一个表Person,该表有一个自增列ID为主键:

    CREATE TABLE [dbo].[Person](
        [ID] [int] IDENTITY(1,1) NOT NULL,
        [Name] [nvarchar](50) NULL,
        [Age] [int] NULL,
     CONSTRAINT [PK_Person] PRIMARY KEY CLUSTERED 
    (
        [ID] ASC
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
    ) ON [PRIMARY]

     

    然后我们使用EF Core的DB First将该表映射为实体类Person,如下所示:

    public partial class Person
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public int? Age { get; set; }
    }

    实体类Person生成的Fluent API代码如下所示:

    modelBuilder.Entity<Person>(entity =>
    {
        entity.Property(e => e.Id).HasColumnName("ID");
    
        entity.Property(e => e.Name).HasMaxLength(50);
    });

     

    然后我们在Program类的Main方法中,通过实体类Person向数据库Person表中插入一行数据:

    class Program
    {
        static void Main(string[] args)
        {
            using (var dbContext = new DemoDBContext())
            {
                Person person = new Person()
                {
                    Name = "Tom",
                    Age = 20
                };
    
                dbContext.Person.Add(person);
                dbContext.SaveChanges();
    
                Console.WriteLine(person.Id);//输出:1
            }
    
            Console.WriteLine("Press any key to end...");
            Console.ReadKey();
        }
    }

    我们在dbContext.SaveChanges()这行代码执行后,通过EF Core的后台日志可以查看到生成的SQL语句如下:

    =============================== EF Core log started ===============================
    Executed DbCommand (95ms) [Parameters=[@p0=''?'' (DbType = Int32), @p1=''?'' (Size = 50)], CommandType=''Text'', CommandTimeout=''30'']
    SET NOCOUNT ON;
    INSERT INTO [Person] ([Age], [Name])
    VALUES (@p0, @p1);
    SELECT [ID]
    FROM [Person]
    WHERE @@ROWCOUNT = 1 AND [ID] = scope_identity();
    =============================== EF Core log finished ===============================

    可以看到EF Core最后使用了scope_identity()函数,来返回了刚刚插入的自增列ID的值。

     

     

    获取默认值列


     

    我们在SQL Server数据库中再建立一个表Book,该表有一个默认值列BookCode为主键,其默认值为函数newid():

    CREATE TABLE [dbo].[Book](
        [BookCode] [nvarchar](50) NOT NULL,
        [BookName] [nvarchar](50) NULL,
        [BookDescription] [nvarchar](50) NULL,
     CONSTRAINT [PK_Book] PRIMARY KEY CLUSTERED 
    (
        [BookCode] ASC
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
    ) ON [PRIMARY]
    GO
    
    ALTER TABLE [dbo].[Book] ADD  CONSTRAINT [DF_Book_BookCode]  DEFAULT (newid()) FOR [BookCode]
    GO

     

    然后我们使用EF Core的DB First将该表映射为实体类Book,如下所示:

    public partial class Book
    {
        public string BookCode { get; set; }
        public string BookName { get; set; }
        public string BookDescription { get; set; }
    }

    实体类Book生成的Fluent API代码如下所示:

    modelBuilder.Entity<Book>(entity =>
    {
        entity.HasKey(e => e.BookCode);
    
        entity.Property(e => e.BookCode)
            .HasMaxLength(50)
            .HasDefaultValueSql("(newid())");
    
        entity.Property(e => e.BookDescription).HasMaxLength(50);
    
        entity.Property(e => e.BookName).HasMaxLength(50);
    });

     

    然后我们在Program类的Main方法中,通过实体类Book向数据库Book表中插入一行数据:

    class Program
    {
        static void Main(string[] args)
        {
            using (var dbContext = new DemoDBContext())
            {
                Book book = new Book()
                {
                    BookDescription = "English book",
                    BookName = "English"
                };
    
                dbContext.Add(book);
                dbContext.SaveChanges();
    
                Console.WriteLine(book.BookCode);//输出:B5AD3E33-3730-4545-8D45-9BD6DFCD5063
            }
    
            Console.WriteLine("Press any key to end...");
            Console.ReadKey();
        }
    }

    我们在dbContext.SaveChanges()这行代码执行后,通过EF Core的后台日志可以查看到生成的SQL语句如下:

    =============================== EF Core log started ===============================
    Executed DbCommand (116ms) [Parameters=[@p0=''?'' (Size = 50), @p1=''?'' (Size = 50)], CommandType=''Text'', CommandTimeout=''30'']
    SET NOCOUNT ON;
    DECLARE @inserted0 TABLE ([BookCode] nvarchar(50), [_Position] [int]);
    MERGE [Book] USING (
    VALUES (@p0, @p1, 0)) AS i ([BookDescription], [BookName], _Position) ON 1=0
    WHEN NOT MATCHED THEN
    INSERT ([BookDescription], [BookName])
    VALUES (i.[BookDescription], i.[BookName])
    OUTPUT INSERTED.[BookCode], i._Position
    INTO @inserted0;
    
    SELECT [t].[BookCode] FROM [Book] t
    INNER JOIN @inserted0 i ON ([t].[BookCode] = [i].[BookCode])
    ORDER BY [i].[_Position];
    =============================== EF Core log finished ===============================

    我们发现EF Core实际上是用SQL Server的Merge语句往数据库Book表中插入了数据,并且使用了Merge语句的OUTPUT关键字,来返回Book表中列BookCode插入的默认值。

     

    我们可以自己写个Merge语句来实验下获取Book表中列BookCode插入的默认值:

    DECLARE @R TABLE (BookCode NVARCHAR(50))
    
    MERGE INTO [dbo].[Book]
    USING (SELECT 1 AS [Number]) AS S ON 1=0
    WHEN NOT MATCHED
    THEN INSERT([BookName],[BookDescription]) VALUES(N''Chinese'',N''Chinese Book'')
    OUTPUT
        INSERTED.BookCode
    INTO @R;
    
    SELECT * FROM @R

    输出结果:

    Book表的数据:

     

    MySQL(社区)数据库表中是否存在最大行数?

    MySQL(社区)数据库表中是否存在最大行数?

    如何解决MySQL(社区)数据库表中是否存在最大行数??

    我有一个应用程序,具有相当简单的平面架构,但是主表可能会超过10亿条记录。

    除了与性能相关的问题外,表中的行数是否有限制?

    解决方法

    暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

    如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

    小编邮箱:dio#foxmail.com (将#修改为@)

    关于检查SQL Server数据库表中是否存在表或列sql server查看表是否存在的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于android检查sqlite数据库中是否存在某个元素、ASP.NET C#在SQL Server数据库表中搜索、EF Core中,通过实体类向SQL Server数据库表中插入数据后,实体对象是如何得到数据库表中的默认值的、MySQL(社区)数据库表中是否存在最大行数?的相关信息,请在本站寻找。

    本文标签: