我的问题是,如果用户点击按钮(例如,放在default.aspx中),那么数据库表是在数据库中创建的(数据库放在sql express 2005中)怎么办?。
我通过其他方法尝试此任务,但发生了以下错误:
1.'system.Web.UI.Page.Server'是'property',但用作'type'。
2.无法找到类型或命名空间名称“数据库”(是吗? 缺少使用指令或 装配参考?)
3.当前上下文中不存在名称“DataType”。
4.'System.Web.UI.WebControls.Table'不包含的定义 '列'并没有扩展方法 '列'接受第一个参数 类型 可以找到'System.Web.UI.WebControls.Table'(你是否错过了使用 指令或汇编参考。
5.'System.Data.Index'由于其保护而无法访问 水平。
6.'System.Data.Index'不包含带'2'的构造函数 参数。7.'System.Data.Index'不包含的定义 'IndexKeyType'并没有扩展方法 'IndexKeyType'接受第一个 'System.Data.Index'类型的参数 可以找到(你错过了使用 指令或程序集引用?)
8.当前上下文中不存在名称“IndexKeyType”。
9.'System.Data.Index'不包含定义 for'IndexedColumns',没有扩展名 方法'IndexedColumns'接受a 类型的第一个参数 可以找到'System.Data.Index'(是 你错过了使用指令或 装配参考?)
10.找不到类型或命名空间名称“Indexedcolumn”(是 你错过了使用指令或 装配参考?)
11.'System.Web.UI.WebControls.Table'不包含的定义 '索引',没有扩展方法 '索引'接受第一个参数 类型 'System.Web.UI.Webcontrols.Table' 可以找到(你错过了使用 指令或程序集引用?)
13.'System.Web.UI.WebControls.Table'不包含的定义 '创建',没有扩展方法 '创造'接受第一个参数 输入'Systen.Web.UI.WebControls.Table' 可以找到(你错过了使用 指令或程序集引用?)
按钮后面用c#编写的代码是:
using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Collections.Generic;
//using System.Data.OleDb;
using System.Diagnostics;
using System.ComponentModel;
using System.Text;
using System.Data.SqlClient;
//using System.Data.Odbc;
using Microsoft.SqlServer.Management.Common;
//using ADOX;
//using ADODB;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
// Establish the database server
string connectionString = ConfigurationManager.ConnectionStrings["gameConnectionString"].ConnectionString;
SqlConnection connection =
new SqlConnection(connectionString);
Server server =
new Server(new ServerConnection(connection));
// Create table in my personal database
Database db = server.Databases["game"];
// Create new table, called TestTable
Table newTable = new Table(db, "TestTable");
// Add "ID" Column, which will be PK
Column idColumn = new Column(newTable, "ID");
idColumn.DataType = DataType.Int;
idColumn.Nullable = false;
idColumn.Identity = true;
idColumn.IdentitySeed = 1;
idColumn.IdentityIncrement = 1;
// Add "Title" Column
Column titleColumn = new Column(newTable, "Title");
titleColumn.DataType = DataType.VarChar(50);
titleColumn.Nullable = false;
// Add Columns to Table Object
newTable.Columns.Add(idColumn);
newTable.Columns.Add(titleColumn);
// Create a PK Index for the table
Index index = new Index(newTable, "PK_TestTable");
index.IndexKeyType = IndexKeyType.DriPrimaryKey;
// The PK index will consist of 1 column, "ID"
index.IndexedColumns.Add(new IndexedColumn(index, "ID"));
// Add the new index to the table.
newTable.Indexes.Add(index);
// Physically create the table in the database
newTable.Create();
}
}
先生,请解决这些错误,并提供详细的解决方案,我可以很容易地理解。我很困惑,请帮助我。谢谢先生
答案 0 :(得分:1)
建议放弃目前的做法。问题超出了命名空间。建议采取以下步骤:
SqlConnection
和SqlCommand
。这样的事情:
using (var conn = new SqlConnection(connString))
{
using (var cmd = conn.CreateCommand())
{
cmd.CommandText = createTableStatement; //CREATE TABLE Foo (ID int);
conn.Open();
cmd.ExecuteNonQuery();
cmd.CommandText = createIndexStatement;
cmd.ExecuteNonQuery();
}
}
这将帮助您开始完成任务。确保用户输入的任何数据不会简单地放入字符串中以创建对象。如果是这样,请更改使用SqlCommand参数的方法。
的文章