2015-03-31 165 views
0

我必须创建一个数据库,然后在创建的数据库内创建一个表。创建数据库和表

我已经连接到我的连接字符串,但我想添加连接,并创建表时我刚才初始目录中创建的新的数据库名称。

这是我

string conn = "SERVER=BRIAN-PC\\SQLEXPRESS; Initial Catalog=master; user id =sa; Password=kagiso"; 

      String str = "CREATE DATABASE IF NOT EXIST PSAHoldings ON PRIMARY" 
       + "(NAME = PSAHoldings_Data," 
       + "FILENAME = 'C:\\PSAHoldings.mdf''," 
       + "SIZE = 2MB, FILEGROWTH =10%)" 
       + "LOG ON (NAME = PSAHoldings_Log," 
       + "FILENAME = 'C:\\PSAHoldingsLog,idf'," 
       + "SIZE = 1MB," 
       + "FILEGROTH = 10%)"; 

SqlConnection connection = new SqlConnection(conn); 
      connection.Open(); 

try 
      { 
       //SqlCommand to create database 
       SqlCommand cmd = new SqlCommand(str, connection); 
       cmd.ExecuteNonQuery(); 

       MessageBox.Show("DataBase was successfully created", "Message", MessageBoxButtons.OK, MessageBoxIcon.Information); 

string connect = "Data Source=Esther-PC\\SQLEXPRESS; Initial Catalog=PSAHoldings; user id =sa; Password=kagiso"; 

      string table = "CREATE TABLE IF NOT EXIST t_original (" + 
       "empId varChar(10) NOT NULL PRIMARY KEY," + 
       "paycode varChar(10) NOT NULL," + 
       "amount int NOT NULL," + 
       ")"; 


      SqlConnection con = new SqlConnection(connect); 
      con.Open(); 

      SqlCommand createTable = new SqlCommand(table, con); 
      createTable.ExecuteNonQuery(); 
      } 
} 
      catch (SqlException sqlEx) 
      { 
       MessageBox.Show(sqlEx.ToString(), "Exception Error", MessageBoxButtons.OK, MessageBoxIcon.Error); 
      } 
      finally 
      { 
       connection.Close(); 
       con.Close(); 
      } 

当我跑我不断收到异常错误的应用程序。

异常错误读取它说:System.Data.SqlClient.SqlException(0x80131904): Incorrect synax near the keyword 'IF'. expression of non-boolean type specified in a context where a condition is expected, near 'PSAHoldings', Unclosed quotation mark after the character string 'Size=1mb, filegrowth=10%)'.

+1

粘贴例外这里... – MajkeloDev 2015-03-31 09:48:05

+1

什么做的异常* *说? – 2015-03-31 09:48:13

+0

@MarcGravell我在编辑代码时粘贴了它 – Esther 2015-03-31 10:03:49

回答

1

我不认为有这样的代码CREATE DATABASE IF NOT EXIST - 找不到它的任何提及在MSDN: https://msdn.microsoft.com/en-us/library/ms176061.aspx

试试这个。

IF NOT EXISTS (SELECT * FROM sys.databases WHERE name = 'PSAHoldings') 
    CREATE DATABASE PSAHoldings ON PRIMARY 
    (NAME = PSAHoldings_Data, 
    FILENAME = 'C:\\PSAHoldings.mdf', 
    SIZE = 3MB, FILEGROWTH =10%) 
    LOG ON (NAME = PSAHoldings_Log, 
    FILENAME = 'C:\\PSAHoldingsLog.idf', 
    SIZE = 1MB, 
    FILEGROWTH = 10%) 

(注意一些其他错误类型的固定也改变文件大小3MB,因为我有一个错误,它需要至少3MB)

+0

“CREATE DATABASE IF NOT EXIST” - 它是MySql的语法:)他在他的问题中使用了MySql标签,但他使用的是SqlExpress - 奇怪的... – MajkeloDev 2015-03-31 10:20:51

+0

真 - 我看到C#和Sql,我的眼睛必须跳过MySql ... – colmde 2015-03-31 10:22:54

+0

我还没有用MySql很多,因为我仍然是一个学习者,我认为MySql和Sql有相同的语法 – Esther 2015-03-31 10:32:40

0
CREATE DATABASE PSAHoldings ON PRIMARY 
       (NAME = PSAHoldings_Data, 
       FILENAME = 'C:\\PSAHoldings.mdf', 
       SIZE = 2MB, FILEGROWTH =10%) 
       LOG ON (NAME = PSAHoldings_Log, 
       FILENAME = 'C:\\PSAHoldingsLog,idf', 
       SIZE = 1MB, 
       FILEGROWTH = 10%) 
0

enter image description here

  1. 第一蓝色突出显示尝试 通过这样的系统对象搜索数据库

    IF NOT EXISTS /那么你创建数据库的脚本放在这里/

  2. 红色高亮我看到两个单引号出现,应该是1单(其中name = N'PSAHoldings'选择的名字从sys.databases中)报价

  3. 检查是否表已经存在

IF NOT EXISTS(SELECT * FROM sys.objects中WHERE的object_id = OBJECT_ID(N '[DBO]。[bbr_categories]')和类型( N'U'))

/您创建表脚本放在这里/