[英]How to retrieve xml from SQL Server 2005 in C#?
我已經通過富文本字段成功地將xml插入SQL Server 2005,現在我要做的是從數據庫中檢索xml,但將值和模式分別分開...如何在現有代碼中做到這一點?
public void setData()
{
dc.ID = textBox1.Text;
dc.Name = richTextBox1.Text;
}
private void button1_Click(object sender, EventArgs e)
{
setData();
int flag = db.InsertData("insert into xmlTB values('" + dc.ID + "','" + dc.Name + "')");
if (flag > 0)
MessageBox.Show("Record Added");
else
MessageBox.Show("Not Added");
try
{
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
其余的插入代碼位於單獨的類中:
public SqlConnection conn = new SqlConnection("Data Source=SERVER1\\SQLEXPRESS;Initial Catalog=xml;Integrated Security=True;Pooling=False");
public int flag = 0;
public SqlDataReader sdr = null;
public DBConnection() { } // constructor
public int InsertData(string qry)
{
try
{
conn.Open();
SqlCommand cmd = new SqlCommand(qry, conn);
flag = cmd.ExecuteNonQuery();
conn.Close();
return flag;
}
catch (Exception)
{
return flag;
}
}
非常感謝
您肯定應該開始使用的幾件事:
今天的操作方式既脆弱又脆弱,並且在表更改時會破裂,再加上SQL命令的連接,這是進行SQL注入攻擊的絕佳機會。 只是不要那樣做!
因此,您的第一種方法應如下所示:
private void button1_Click(object sender, EventArgs e)
{
setData();
string query = "INSERT INTO dbo.xmlTB(ID, Name) VALUES(@ID, @Name)";
int flag = db.InsertData(query, ...(somehow pass in the parameters!.....);
......
}
其次,第二種方法應該
using(....) { ... }
結構來保護和處置您的SqlConnection
和SqlCommand
對象實例 SqlCommand
對象上調用ExecuteReader
或ExecuteScalar
。 像這樣:
public string ReadXmlData(int ID)
{
string query = "SELECT XmlContent FROM dbo.xmlTB WHERE ID = @ID";
string connectionString = "Data Source=SERVER1\\SQLEXPRESS;Initial Catalog=xml;Integrated Security=True;Pooling=False";
using(SqlConnection conn = new SqlConnection(connectionString))
using(SqlCommand cmd = new SqlCommand(query, conn))
{
cmd.Parameters.Add("@ID", SqlDbType.Int);
cmd.Parameters["@ID"].Value = ID;
conn.Open();
string xmlContents = cmd.ExecuteScalar().ToString();
conn.Close();
return xmlContents;
}
catch (Exception)
{
return flag;
}
}
這個問題看起來很模糊,但是:在添加記錄后,調用另一個稱為“ GetData”的方法(您需要編寫此方法)。 此方法可能使用cmd.ExecuteReader()來調用數據庫。 確保查詢中的select語句在表名的末尾具有“ FOR XML”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.