Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# CREATETABLE命令实际上并不创建表c_C#_Sql_Sql Server Ce_Create Table - Fatal编程技术网

C# CREATETABLE命令实际上并不创建表c

C# CREATETABLE命令实际上并不创建表c,c#,sql,sql-server-ce,create-table,C#,Sql,Sql Server Ce,Create Table,我正在尝试创建一个命令,该命令应根据文本框中键入的名称创建一个表。没有错误,有效,查询看起来不错,但实际上并没有创建表。为什么呢 private void button1_Click(object sender, EventArgs e) { int count = 0; var connString = (@"Data Source=" + System.IO.Path.Combine(System.IO.Path.GetDirectoryName(System.Reflec

我正在尝试创建一个命令,该命令应根据文本框中键入的名称创建一个表。没有错误,有效,查询看起来不错,但实际上并没有创建表。为什么呢

private void button1_Click(object sender, EventArgs e)
{
    int count = 0;

    var connString = (@"Data Source=" + System.IO.Path.Combine(System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location)) + @"\Grupe.sdf");

    using (var conn = new SqlCeConnection(connString))
    {
        try
        {
            conn.Open();
            var query = "CREATE TABLE "  + textBox1.Text.Trim() + "(" + "Id int NOT NULL IDENTITY (1,1) PRIMARY KEY" ;
            MessageBox.Show(query);

            foreach (Control c in this.Controls)
            {
                if (c.Name.Contains("temp") && c is TextBox)
                {
                    if (!String.IsNullOrEmpty(c.Text))
                    {
                        query += "," + c.Text.Trim() + " nvarchar(MAX) NULL";
                        count++;
                    }
                }
            }

            query += ")";

            var command = new SqlCeCommand(query, conn);
            command.ExecuteNonQuery();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.ToString());
        }
    }
}
试试看

以前

    var command = new SqlCeCommand(query, conn);
您肯定会发现语法错误。代码看起来不错,但我想您必须看到为createtable生成的完整查询

我相信nvarchar是有4000个字符限制的东西,我找不到nvarchar是支持的类型列表。在代码中使用ntext效果很好

private void button1_Click(object sender, EventArgs e)
    {
        int count = 0;
        var connString = (@"Data Source=Grupe.sdf");

        if (!File.Exists("Grupe.sdf"))
        {
            SqlCeEngine engine = new SqlCeEngine(connString);
            engine.CreateDatabase();
        }

        using (var conn = new SqlCeConnection(connString))
        {
            try
            {
                conn.Open();
                var query = "CREATE TABLE " + textBox1.Text.Trim() + "(" + "Id int NOT NULL IDENTITY (1,1) PRIMARY KEY";
                MessageBox.Show(query);
                foreach (Control c in this.Controls)
                {
                    if (c.Name.Contains("temp") && c is TextBox)
                    {
                        if (!String.IsNullOrEmpty(c.Text))
                        {
                            query += "," + c.Text.Trim() + " ntext NULL";


                            count++;
                        }
                    }


                }
                query += ")";

                MessageBox.Show(query);

                var command = new SqlCeCommand(query, conn);
                command.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }

        }
    }

在bin/debug文件夹中查找数据库文件的副本

是否有一个按钮实际连接到处理程序?处理程序是否实际被调用?断点的好位置。连接到处理程序是什么意思?如果在不中断调试会话的情况下单击按钮两次,是否会收到一条错误消息,说明表已存在?如果按两次,则表示表已存在。奇怪的但是它仍然没有显示在服务器资源管理器中,因为创建表的数据库不是您要创建的数据库think@Ezekiel-当您说未创建表时,您确定正在查看正确的数据库吗?是。这是肯定的。我已经做了messagebox的事情,没关系。我唯一的问题是。查询如下:创建表dsaid int NOT NULL1,1主键,然后不创建paranthes。是否应该是最终的paranthes?创建表TEMP Id int NOT NULL IDENTITY 1,1主键,X nvarcharMAX NULL;或创建表临时Id int NOT NULL标识1,1主键;尝试从代码中插入临时值“1”,并查看是否可以添加行。如果是,请参阅Steven的注释数据库文件在那里,但它的副本不在那里。
private void button1_Click(object sender, EventArgs e)
    {
        int count = 0;
        var connString = (@"Data Source=Grupe.sdf");

        if (!File.Exists("Grupe.sdf"))
        {
            SqlCeEngine engine = new SqlCeEngine(connString);
            engine.CreateDatabase();
        }

        using (var conn = new SqlCeConnection(connString))
        {
            try
            {
                conn.Open();
                var query = "CREATE TABLE " + textBox1.Text.Trim() + "(" + "Id int NOT NULL IDENTITY (1,1) PRIMARY KEY";
                MessageBox.Show(query);
                foreach (Control c in this.Controls)
                {
                    if (c.Name.Contains("temp") && c is TextBox)
                    {
                        if (!String.IsNullOrEmpty(c.Text))
                        {
                            query += "," + c.Text.Trim() + " ntext NULL";


                            count++;
                        }
                    }


                }
                query += ")";

                MessageBox.Show(query);

                var command = new SqlCeCommand(query, conn);
                command.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }

        }
    }