Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.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# SQL server express,无法在C中读取或写入_C#_Sql_Sql Server_Winforms - Fatal编程技术网

C# SQL server express,无法在C中读取或写入

C# SQL server express,无法在C中读取或写入,c#,sql,sql-server,winforms,C#,Sql,Sql Server,Winforms,我编写了一段代码,可以自动添加和读取SQL Server 2012 Express表中的信息,即登录。但它不起作用,下面是代码: private void Form1_Load(object sender, EventArgs e) { SqlConnection myConnection = new SqlConnection("user id=myComputer;" + "server=MYCOMPUTER-PC\\SQLEXPRESS;" +

我编写了一段代码,可以自动添加和读取SQL Server 2012 Express表中的信息,即登录。但它不起作用,下面是代码:

private void Form1_Load(object sender, EventArgs e)
    {
        SqlConnection myConnection = new SqlConnection("user id=myComputer;" + "server=MYCOMPUTER-PC\\SQLEXPRESS;" +
                "Trusted_Connection=yes;" + "database=loginTest; " + "connection timeout=5");
        try
        {
            myConnection.Open();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.ToString());
        }
        SqlCommand myCommand = new SqlCommand("INSERT INTO dbo.Logins Values ('John','Password','Admin')", myConnection);
        try
        {
            SqlDataReader myReader = null;
            SqlCommand myCommand1 = new SqlCommand("select * from Logins",
                                                     myConnection);
            myReader = myCommand1.ExecuteReader();
            while (myReader.Read())
            {
                MessageBox.Show(myReader["Column1"].ToString());
                MessageBox.Show(myReader["Column2"].ToString());
            }
        }
        catch (Exception ex1)
        {
            MessageBox.Show(ex1.ToString());
        }
    }
我已经调试了程序,看起来一切都很顺利,它跳过了:

        {
            MessageBox.Show(myReader["Column1"].ToString());
            MessageBox.Show(myReader["Column2"].ToString());
        }
出于某种原因,它没有写下我告诉它的值

谁能告诉我为什么?我是SQL的初学者,所以请放松:

PS它不会发出任何错误代码或异常

它跳过[…]

这大概是因为没有数据可读取,所以myReader.read只返回false

它没有写我告诉它的值

你并没有让它写任何东西。您创建了一个SqlCommand来插入数据,但从未执行它。您需要使用myCommand.ExecuteOnQuery。您还应该对命令、连接和读取器使用using语句,以确保它们正确关闭

它跳过[…]

这大概是因为没有数据可读取,所以myReader.read只返回false

它没有写我告诉它的值

你并没有让它写任何东西。您创建了一个SqlCommand来插入数据,但从未执行它。您需要使用myCommand.ExecuteOnQuery。您还应该对命令、连接和读卡器使用using语句,以确保它们正确关闭。

您登录的表没有任何记录,如果您想尝试先插入一些记录进行测试,则是这一行导致了您的问题:

SqlCommand myCommand = new SqlCommand("INSERT INTO dbo.Logins Values ('John','Password','Admin')", myConnection);
myCommand.ExecuteNonQuery();//Do this to insert something into your Logins first.
您登录的表没有任何记录,如果您的意思是要先尝试插入一些记录进行测试,则是这一行导致了您的问题:

SqlCommand myCommand = new SqlCommand("INSERT INTO dbo.Logins Values ('John','Password','Admin')", myConnection);
myCommand.ExecuteNonQuery();//Do this to insert something into your Logins first.

您从未使用过INSERT commandofftopic提示:尽量不要用这么多的try-catch块污染代码。您从未使用过INSERT commandofftopic提示:尽量不要用这么多的try-catch块污染代码。谢谢!那么为什么需要这样做呢?@user2827904调用ExecuteNonQuery将正式对您的表运行查询。您应该在ExecuteOnQuery上搜索更多信息。当然,正如我所说,如果您的表有一些记录,那么您的代码可以工作,但它不能。这样插入只是为了确保有一些记录用于测试下一个SELECT查询,通常我们不会先插入然后再选择。谢谢!那么为什么需要这样做呢?@user2827904调用ExecuteNonQuery将正式对您的表运行查询。您应该在ExecuteOnQuery上搜索更多信息。当然,正如我所说,如果您的表有一些记录,那么您的代码可以工作,但它不能。插入这种方法只是为了确保有一些记录用于测试下一个SELECT查询,通常我们不会先插入,然后再选择