1

我编写了一个代码,可以自动从我的 SQL Server 2012 Express 表 Logins 添加和读取信息。但它不会工作,这里是代码:

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它不会触发任何错误代码或异常

4

2 回答 2

4

它跳过 [...]

大概是因为没有要读取的数据,所以myReader.Read()只返回false.

它没有写出我告诉它的值。

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

于 2013-10-03T19:32:31.650 回答
4

Logins的表没有任何记录,如果你的意思是你想先尝试插入一些记录来测试,那么这行会导致你的问题:

SqlCommand myCommand = new SqlCommand("INSERT INTO dbo.Logins Values ('John','Password','Admin')", myConnection);
myCommand.ExecuteNonQuery();//Do this to insert something into your Logins first.
于 2013-10-03T19:32:40.770 回答