更新: 史蒂夫https://stackoverflow.com/a/57692761/5758150的出色回答 另外需要包括:我的连接字符串中的Integrated Security = SSPI解决了此问题。 非常感谢大家的帮助。
我是C#newb,这是我的第一个项目。 该代码旨在查询sql server表并将结果返回到Windows Form上的datagridviewer中。 表单编译没有错误,只是显示了一个空白的datagridviewer。
有人可以告诉我我在做什么错吗? 我已经检查了服务器名称,数据库名称等,它们都是正确的。
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data;
using System;
using System.Data.SqlClient; //For SQL Connection
namespace Reference_Table_Updater
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
void GetList()
{
String strConnection = "server;" +
"Database='Scratchpad';";
SqlConnection con = new SqlConnection(strConnection);
SqlCommand sqlCmd = new SqlCommand();
sqlCmd.Connection = con;
sqlCmd.CommandType = CommandType.Text;
sqlCmd.CommandText = "Select * from dbo.UPDATE_Test";
SqlDataAdapter sqlDataAdap = new SqlDataAdapter(sqlCmd);
DataTable dtRecord = new DataTable();
sqlDataAdap.Fill(dtRecord);
dataGridView1.DataSource = dtRecord;
}
private void Form1_Load()
{
GetList();
}
}
}
答案 0 :(得分:1)
该Form_Load不正确。可能是您手动添加了它,但从未调用过它。当然,网格不会被填充。
要调用Form_Load,您需要将其绑定到Load事件
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.Load += Form_Load;
}
private void Form_Load(object sender, EventArgs e)
{
GetList();
}
当然,事件处理程序与事件的绑定通常是使用表单设计器完成的,双击您要处理的事件。 (因此不需要在表单构造函数中编写绑定)
现在,应调用您的GetList,如果有错误,则应引发它们,并带有异常。除非连接字符串或数据库表存在问题,否则GetList代码似乎是正确的。
答案 1 :(得分:0)
在这里您需要使用用户名和密码
String strConnection = "server;" + "Database='Scratchpad';";
像这个例子:
"SERVER=localhost; user id=root; password=; database=Scratchpad";
还是您正在使用Windows自动认证?