Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.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# ExecuteOnQuery()未响应/正在工作_C#_Database_Database Connection_Executenonquery - Fatal编程技术网

C# ExecuteOnQuery()未响应/正在工作

C# ExecuteOnQuery()未响应/正在工作,c#,database,database-connection,executenonquery,C#,Database,Database Connection,Executenonquery,我的申请有一个问题,以前是有效的。我的应用程序连接到Oracle数据库。目前我想增加一个新帐户。在我的C#代码中,我有一个具有以下方法的数据库类: public void AddAccount(string name, string addres, string username, string password) { string query = "insert into account(id, name, addres, username, password, datecreated

我的申请有一个问题,以前是有效的。我的应用程序连接到Oracle数据库。目前我想增加一个新帐户。在我的C#代码中,我有一个具有以下方法的数据库类:

public void AddAccount(string name, string addres, string username, string password)
{
    string query = "insert into account(id, name, addres, username, password, datecreated, game_id) values(account_seq.nextval,:name,:addres,:username,:password, sysdate, 1)";

        OpenConnection();
        try
        {
            OracleCommand command = new OracleCommand(query, connection);
            OracleParameter[] parameters = new OracleParameter[]
            {
                new OracleParameter(":name", name),
                new OracleParameter(":addres", addres),
                new OracleParameter(":username", username),
                new OracleParameter(":password", password)
            };
            command.Parameters.AddRange(parameters);
            command.ExecuteNonQuery();
            System.Windows.Forms.MessageBox.Show("Welcome " + username + "! You can now login with your new account.");
        }
        catch (OracleException ex)
        {
            System.Windows.Forms.MessageBox.Show(ex.Message);
        }
        CloseConnection();
    }
以下是将我连接到数据库的
OpenConnection
方法:

public bool OpenConnection()
            {
                try
                {
                    connection = new OracleConnection();
                    String user = "***";
                    String pw = "***";
                    connection.ConnectionString = "User Id=" + user + ";Password=" + pw + ";Data Source=" + " //localhost:1521/xe" + ";"; //orcl is de servicename (kan anders zijn, is afhankelijk van de Oracle server die geinstalleerd is. Mogelijk is ook Oracle Express: xe
                    //System.Windows.Forms.MessageBox.Show("Connectie met database");
                    connection.Open();
                    //System.Windows.Forms.MessageBox.Show("Test");
                    return true;

                }
                catch (OracleException)
                {
                    return false;
                }
            }
最后,这里是我的主窗体中的方法,我想在其中添加一个新成员:

private void btnRegister_Click(object sender, EventArgs e)
{
    database = new Database();
    database.AddAccount(tbRegisterName.Text, tbRegisterAddress.Text, tbRegisterUsername.Text, tbRegisterPassword.Text);
    database.AddAchievement1();
}
我与数据库的连接正常,我用messagebox对其进行了测试。从我的状态来看,一切都是有效的。奇怪的是,它无法通过
命令它不会给出错误或任何东西。它只是挂起/崩溃

参数中的所有数据都是正确的,正如我所说的,它以前是有效的。所以我觉得很奇怪,它现在不起作用了。我没有改变任何重要的事情

根据我的经验,如果没有Inet连接或数据库未连接到应用程序,则
ExecuteNonQuery()
方法可能会失败。但这些都不是真的。所以我想知道你们中是否有专家知道问题出在哪里。

如果
OpenConnection()
失败,您在
AddAccount()
中不会得到任何反馈

尝试:


此方法可以指定问题所在。

可能是因为您使用的参数错误。 删除变量名称前的冒号,如下所示:

new OracleParameter ("name", name);
new OracleParameter ("addres", addres); // etc
但是在查询中保留冒号

以下是有关此主题的一些信息:

new OracleParameter ("name", name);
new OracleParameter ("addres", addres); // etc