我在编写 asp.net 代码方面很新,但我无法解决问题。每次我尝试注册时都会收到以下错误:
Type name is invalid.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.Data.OleDb.OleDbException: Type name is invalid.
Source Error:
Line 60: }
Line 61:
Line 62: cmnd.ExecuteNonQuery();
Line 63: this.cnct.Close();
Line 64: }
源代码是:
public class Connection
{
private OleDbConnection cnct;
public Connection(string dbPath)
{
this.cnct = new OleDbConnection(@"Provider=Microsoft.Jet.OleDb.4.0; Data Source=" + dbPath);
}
/// <param name="types">'c' - VarChar, 'C' - Char, 'n' - VarNumeric, 'b' - Boolean</param>
public void Insert(string tableName, string[] inputs, char[] types)
{
string sql = "INSERT INTO " + tableName + " VALUES (";
for (int i = 0; i < inputs.Length - 1; i++)
sql += "@p" + i + ",";
sql += "@p" + (inputs.Length - 1) + ")";
this.cnct.Open();
OleDbCommand cmnd = new OleDbCommand(sql, this.cnct);
for (int i = 0; i < inputs.Length; i++)
{
if (types[i] == 'c')
{
cmnd.Parameters.Add("@p" + i, OleDbType.VarChar);
cmnd.Parameters["@p" + i].Value = inputs[i];
}
else if (types[i] == 'C')
{
cmnd.Parameters.Add("@p" + i, OleDbType.Char);
cmnd.Parameters["@p" + i].Value = inputs[i];
}
else if (types[i] == 'n')
{
cmnd.Parameters.Add("@p" + i, OleDbType.VarNumeric);
cmnd.Parameters["@p" + i].Value = double.Parse(inputs[i]);
}
else if (types[i] == 'b')
{
cmnd.Parameters.Add("@p" + i, OleDbType.Boolean);
cmnd.Parameters["@p" + i].Value = bool.Parse(inputs[i]);
}
}
cmnd.ExecuteNonQuery();
this.cnct.Close();
}
}
并使用调用 Insert 方法
Connection cnct = new Connection(Server.MapPath("App_Data/WMUdb.mdb"));
cnct.Insert("members", values, new char[7] { 'c', 'c', 'c', 'c', 'C', 'n', 'b' });
(在哪里
values = new string[7] {"userName","my name","pswrd123","email@example.com","2000-01-01"};
)。
我应该怎么做才能解决它?
非常感谢。