插入c#到Microsoft access
我试图将一些文本框中的文本插入access中的数据库。代码不会产生错误,但似乎不会将项目添加到数据库中 数据库称为“数据库”,表称为“TotalPlayerName”,字段称为“玩家名称”。 表中还有其他字段插入c#到Microsoft access,c#,database,visual-studio,ms-access,ms-access-2010,C#,Database,Visual Studio,Ms Access,Ms Access 2010,我试图将一些文本框中的文本插入access中的数据库。代码不会产生错误,但似乎不会将项目添加到数据库中 数据库称为“数据库”,表称为“TotalPlayerName”,字段称为“玩家名称”。 表中还有其他字段 for(int i = 0; i < numberOfPlayers; i++){ using (OleDbConnection connection = new OleDbConnection(@"CONNECTION STRING"){ using (OleDbCo
for(int i = 0; i < numberOfPlayers; i++){
using (OleDbConnection connection = new OleDbConnection(@"CONNECTION STRING"){
using (OleDbCommand command = new OleDbCommand(@"INSERT INTO TotalPlayerName ([Player Name]) VALUES(@p1)", connection)){
connection.Open();
command.Parameters.Add("@p1", OleDbType.VarWChar).Value = Convert.ToString(textBox[i].Text);
command.ExecuteNonQuery();
}
}
}
for(int i=0;i
您可能只需要声明@p1,因为您在INSERT语句中调用了它,但它从未定义为变量,例如:varchar、int、etc等。这可能适用于您尝试执行的操作:
using (OleDbCommand command = new OleDbCommand(@"DECLARE @p1 VARCHAR(50) INSERT INTO TotalPlayerName ([Player Name]) VALUES(@p1)", connection)){
如果可能的话,我肯定会将其作为一个存储过程(如果可以的话)。这适用于SQL不确定它是否适用于MS Access,但我可以想象。您可能要做的另一件事是确保它找到了正确的数据库
Database.dbo.TotalPlayerName
但这可能不是问题所在,可能只是缺少变量声明。虽然我看不出您的代码有什么特别的错误,但我可以告诉您,您的方法有点错误。具体来说,对于循环的每一次迭代,您都是:
using (OleDbConnection conn = new OleDbConnection(
@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\foo.accdb"))
{
conn.Open();
OleDbCommand command = new OleDbCommand(
@"INSERT INTO TotalPlayerName ([Player Name]) VALUES (@p1)", conn);
command.Parameters.Add(new OleDbParameter("@p1", OleDbType.VarChar));
for (int i = 0; i < numberOfPlayers; i++)
{
command.Parameters[0].Value = textbox[i].Text;
try
{
command.ExecuteNonQuery();
}
catch (Exception ex)
{
// do something
}
}
conn.Close();
}
使用(OLEDB连接连接=新OLEDB连接(
@“Provider=Microsoft.ACE.OLEDB.12.0;数据源=c:\foo.accdb”))
{
conn.Open();
OleDbCommand命令=新的OleDbCommand(
@“插入TotalPlayerName([玩家名称])值(@p1)”,康涅狄格州);
Add(新的OleDbParameter(“@p1”,OleDbType.VarChar));
for(int i=0;i
我假设textbox
是实际文本框控件的数组或列表。如果是这种情况,那么textbox[I]。Text
已经是一个字符串,您不需要做任何特殊的操作来让OLE识别它
最后,请注意--添加try/catch并在那里放置一个断点。您确定它没有失败吗?如果您在调试模式下运行,则无法保证您的程序会停止--它可能会返回表单而不报告任何错误。在您尝试部署应用程序之前,您可能不会看到实际的错误发生感谢您的反馈,但这只是抛出了一个语法错误。@Alby由于它只是一个文本查询,您可以做的是:使用(OleDbCommand命令=新OleDbCommand(“插入到TotalPlayerName([Player Name])值(“+Convert.ToString(textBox[i].text)+”,连接)){